2013-02-26 2 views
1

У меня проблема с реализацией обратной навигации.Как восстановить заднюю навигацию с помощью фрагментов?

Деятельность A1 начинает деятельность A2. A2 содержит полный фрагмент экрана:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/fragment_container" 
android:layout_width="match_parent" 
android:layout_height="match_parent" > 

    <!-- fragment goes here --> 

</RelativeLayout> 

в A2 «s onCreate() я загружаю фрагмент F1 в вышеуказанном контейнере:

@Override 
protected void onCreate(Bundle arg0) { 
    super.onCreate(arg0); 
    setContentView(R.layout.activity_main); 
    replaceFragment(new AccountHomeFragment()); 
} 

public void replaceFragment(Fragment f){ 
    FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
    fragmentTransaction.replace(R.id.fragment_container, f); 
    fragmentTransaction.addToBackStack(f.getClass().getSimpleName()); 
    fragmentTransaction.commit(); 
} 

И в какой-то момент пользователь нажимает на кнопку и F1 является заменен на F2. Проблема заключается в том, когда пользователь нажимает на кнопку назад:

  • первый щелчок: ничего не происходит
  • второй щелчок: идет от F2 к A1 (F1 пропущено)

Что я ожидаю

  • 1-й клик: F2 ->F1
  • второй щелчок: F1 ->A1

Я заметил, что если я нажимаю назад, прежде чем F1 заменяется на F2:

  • первый щелчок: F1 -> пустой экран
  • второй щелчок: пустой экран->A1
+0

Что вы ожидаете, вы имели в виду F2-> F1, тогда F1-> A1, правильно? – dmon

+0

@dmon: Абсолютно. Я исправил вопрос. – znat

+0

Как вы добавляете F2? Вы используете метод replaceFragment? –

ответ

0

Я думаю, что ваша проблема может быть вызвана добавлением первого фрагмента в заднюю часть. В вашем onCreate вы вызываете replaceFragment, который добавляет его автоматически. Просто добавьте фрагмент вручную без вызова addToBackStack и используйте функцию replaceFragment для всех последующих транзакций фрагментов.

+0

Благодарим вас за ответ. Я пробовал это, но потом, когда я нажимаю F2, я пропускаю A2-F1 и возвращаюсь обратно в A1 – znat

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