Mam 3 fragmenty, Frag_A, Frag_B & Frag_C.Pusta strona jest wyświetlana po pobraniu fragmentu i zastąpieniu go ponownie tym samym fragmentem.
Moja logika nawigacji to: Frag_A ==> Frag_B ==> Frag_C. To Frag_A jest dodawane do układu po raz pierwszy, więc po raz pierwszy Frag_A jest wyświetlany na ekranie, a jeśli użytkownik naciśnie przycisk Dalej, Frag_A zostanie zastąpione Frag_B, teraz Frag_B jest pokazane na ekranie, jeśli użytkownik nacisnął przycisk Dalej, Frag_B jest zamieniany na Frag_C, tak że Frag_C pojawia się na ekranie.
Wszystko działa poprawnie z moim kodem w tym momencie.
Metoda zmienić na następny fragment: Plik
//here, argument 'fragment' is either Frag_B or Frag_C
public void showFragment(Fragment fragment){
FragmentManager fragMgr = activity.getSupportFragmentManager();
FragmentTransaction fragTrans = fragMgr.beginTransaction();
fragTrans.replace(R.id.frag_placeholder, fragment, fragmentName);
fragTrans.addToBackStack(null);
int transId = fragTrans.commit();
fragMgr.executePendingTransactions();
}
Układ działalności (Frag_A jest dodawany do frag_placeholder kiedy rozpoczyna aktywny):
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
>
<FrameLayout
android:id="@+id/frag_placeholder"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
</merge>
Ale po Frag_C jest widoczny, jeśli I pop Frag_C przez naciśnięcie fizycznego przycisku Wstecz i wywołanie metody showFragment(Frag_C)
, aby ponownie wyświetlić Frag_C zaraz po tym, jak mój kod wykrył naciśnięcie przycisku fizycznego, Zostaje wyświetlona pusta strona wyświetlana na ekranie. Dlaczego & jak to naprawić?
================ Wyjaśnić =====================
powiedziałem powyżej „* pokazują Frag_C ponownie zaraz po wykryciu mój kod przycisku fizycznego przycisku *”, tutaj jest to, co mam na myśli:
W działalność:
@Override
public void onBackPressed() {
super.onBackPressed();
//I detect the Physical Back button is pressed & invoke the method to show the popped Frag_C again.
}
* zaraz po wykryciu mojego kodu naciśnięto przycisk fizyczny, * - co to dokładnie oznacza? – Luksprog
Proszę sprawdzić moje wyjaśnienie w OP – Mellon
Dzikie domysły ... czy używasz metody 'showFragment()' z tym samym wystąpieniem fragmentu? Poza tym wydaje się to nieco dziwne, użytkownik usuwa fragment tylko po to, aby pokazać go ponownie. – Luksprog