2014-09-24 7 views
0

Я сделал ящик для навигации, и я установил некоторые элементы и обычно, когда я выбираю элемент, текущий фрагмент будет изменен на новый, для меня это не так, first Activity все еще отображается, даже если фрагменты изменяются. Это мой метод onNavigationDrawerItemSelected, и ясно, что я меняю фрагмент каждый раз, когда нажимаю на новый.Как я могу получить текущий идентификатор фрагмента

@Override 
public void onNavigationDrawerItemSelected(int position) { 
    // update the main content by replacing fragments 

    FragmentManager fragmentManager = getSupportFragmentManager(); 
    // TODO : Added 
    switch(position) { 
     /*case 0 : 
      fragmentManager.beginTransaction() 
        .replace(R.id.container, new ProfilFrgement()) 
        .commit(); 
      break;*/ 
     case 1: 
      fragmentManager.beginTransaction() 
        .replace(R.id.container, new SpotFragement()) 
        .commit(); 
      break; 
     case 2: 
      fragmentManager.beginTransaction() 
        .replace(R.id.container, new SessionsFragement()) 
        .commit(); 
      break; 
     /*case 3: 
      fragmentManager.beginTransaction() 
        .replace(R.id.container, new EventsFragment()) 
        .commit(); 
      break;*/ 

    } 

} 

Я думаю, что моя проблема - это всегда один и тот же контейнер. Итак, что мне нужно для получения текущего фрагмента ID

ответ

-1

Что такое текущий идентификатор фрагмента? Ur id - это R.id.container, который является только одним rt? то в чем вопрос «Как я могу получить текущий идентификатор фрагмента»?

Если вопрос заключается в том, чтобы найти, какой текущий фрагмент показан пользователю? Если да, то

Fragment ft = getSupportFragmentManager().findFragmentById(R.id.container); 

if (ft instanceof SpotFragement) { 
// navigation drawer item 1 and current fragment is SpotFragment. 
} else if (ft instanceof SessionsFragement) { 

} 
+0

У меня есть активность, в которой размещен ящик навигации, а после щелчка элемента я меняю фрагмент, но содержимое контейнера не отображается. –

+0

Ур фрагмент не отображается в контейнере? –

+0

Да. Но в контейнере есть сообщение, которое я должен проверить, если изменения проходят очень хорошо, и это не так (я не знаю, должно ли оно быть пустым) –

-1

Убедитесь, что ваш дизайн контейнера верен. Проверьте следующие значения контейнера раз -

  • андроида: layout_width
  • андроида: layout_height
+0

'android: layout_width =" match_parent "android: layout_height =" match_parent "' Почему? –

0

К сожалению, слишком поздно, но у меня есть решение, чтобы получить фрагмент ID. Вы можете использовать имя класса фрагмента как идентификатор, а не идентификатор. Для хранения имени класса используйте статическую переменную String.

public class Activity{ 
... 
static String currentFragment = null; 
... 
... 
@Override 
public boolean onNavigationItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case R.id.nav_one: 
      setFragment(new oneFragment()); 
      break; 
     case R.id.nav_two: 
      setFragment(new twoFragment()); 
      break; 
    } 
    return true; 
} 

public static void setFragment(@NonNull Fragment f) { 
    if(!f.getClass().getName().equals(currentFragment)){ 
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
    fragmentTransaction.replace(R.id.container, f); 
    fragmentTransaction.commit(); 
    currentFragment = f.getClass().getName(); 
    } 
... 
}