2014-09-08 4 views
0

У меня есть выдвижной ящик и серия фрагментов. На последнем фрагменте иерархии у меня есть кнопка ВВЕРХ на панели действий. Как нажал эту кнопку, onOptionsItemSelected (MenuItem элемент) корневой активности называется, где я могу узнать, какая кнопка нажата в следующем предиката:Навигационный ящик - верхний фрагмент

else if (item.getItemId() == android.R.id.home) 
    { 
     System.out.println("android.R.id.home\n\n"); 
     // super.onBackPressed(); 
     // getFragmentManager().beginTransaction().replace(R.id.content_frame, fragment).commit(); 
     return true; 
    } 

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

ответ

1

У меня была эта проблема перед фрагментами друг на друга, когда я впервые начал их использовать. Я использую этот код для добавления фрагментов:

FragmentManager fragmentManager = getFragmentManager(); 
FragmentTransaction transaction =fragmentManager.beginTransaction(); 
Fragment fragment = new CustomFragment(); // your fragment to add 
transaction.replace(R.id.content_frame, fragment,CustomFragment.TAG); // a string in case you need to check with fragment is currently visible. 
transaction.addToBackStack(null); 
transaction.commit(); 

Это гарантирует, что при нажатии кнопки назад ток один исчезнет, ​​и один, прежде чем он будет показывать.

надеюсь, что это сработает.

0

На самом деле вы можете просто сбрасывать задний стек, без отслеживания с помощью необходимых ключей/тегов: FragmentManager.popBackStack(). Просто используйте null при добавлении фрагментов в задний стек, система автоматически выберет для него тег.

+0

Да, я уже узнал об этом. К сожалению, фрагмент остается на экране, но с меньшим альфа - я могу видеть предыдущий фрагмент через него. –

+0

Похоже, что у вас что-то еще происходит. Если вы добавили фрагмент (или заменили) и сказали транзакции добавить его в задний стек, поп удалит его и восстановит то, что было ранее в контейнере. –

Смежные вопросы