Ich habe 3 Fragmente, Frag_A, Frag_B & Frag_C.Die leere Seite wird angezeigt, wenn Sie das Fragment wieder öffnen und das gleiche Fragment erneut ersetzen.
Meine Navigationslogik ist: Frag_A ==> Frag_B ==> Frag_C. Das heißt, Frag_A wird zuerst in das Layout eingefügt, also wird zum ersten Mal Frag_A auf dem Bildschirm angezeigt. Wenn Benutzer dann auf Weiter drückt, wird Frag_A durch Frag_B ersetzt, jetzt wird Frag_B auf dem Bildschirm angezeigt, wenn der Benutzer auf die Schaltfläche Weiter drückt, Frag_B wird durch Frag_C ersetzt, so dass Frag_C auf dem Bildschirm angezeigt wird.
Alles funktioniert gut mit meinem Code an diesem Punkt.
Methode zum nächsten Fragmente zu ändern:
//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();
}
Layout-Datei der Aktivität (Frag_A zum frag_placeholder hinzugefügt wird, wenn Aktivität beginnt):
<?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>
Aber nach Frag_C gezeigt wird, wenn I pop Frag_C durch Drücken der physikalischen Zurück-Taste und Aufruf der showFragment(Frag_C)
Methode, um die Frag_C wieder anzuzeigen, direkt nachdem mein Code die physische Taste gedrückt hat, Ich bekomme eine leere Seite auf dem Bildschirm angezeigt. Warum & wie man es repariert?
================ Erklären =====================
ich sagte, oben „* die Frag_C zeigen wieder direkt nach meinem Code die physische Taste gedrückt wird * erkannt“, hier ist das, was ich meine:
In Aktivität:
@Override
public void onBackPressed() {
super.onBackPressed();
//I detect the Physical Back button is pressed & invoke the method to show the popped Frag_C again.
}
* direkt nachdem mein Code erkannt wurde, wird die physische Taste gedrückt, * - was genau bedeutet das? – Luksprog
Bitte überprüfen Sie meine Erklärung in OP – Mellon
Eine wilde Vermutung ... verwenden Sie die 'showFragment()' Methode mit der gleichen Instanz des Fragments? Auch das erscheint ein bisschen seltsam, der Benutzer entfernt das Fragment nur für Sie, um es erneut zu zeigen. – Luksprog