Ho 3 frammenti, Frag_A, Frag_B & Frag_C.Viene visualizzata una pagina vuota quando si inserisce il frammento e lo si sostituisce nuovamente nello stesso frammento
La mia logica di navigazione è: Frag_A ==> Frag_B ==> Frag_C. Quello è Frag_A viene aggiunto al layout in primo luogo, quindi, al primo momento, Frag_A viene visualizzato sullo schermo, quindi, se l'utente preme il pulsante Avanti, Frag_A viene sostituito da Frag_B, ora Frag_B viene visualizzato sullo schermo, se l'utente preme il pulsante Avanti, Frag_B è sostituito da Frag_C, in modo che Frag_C venga visualizzato sullo schermo.
A questo punto tutto funziona correttamente con il mio codice.
metodo per passare alla successiva frammento: file di
//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 di attività (Frag_A viene aggiunto al frag_placeholder all'avvio di attività):
<?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>
Ma, dopo viene mostrato Frag_C, se I pop Frag_C premendo il pulsante fisico indietro e richiamare il metodo showFragment(Frag_C)
per mostrare di nuovo il Frag_C subito dopo che il mio codice ha rilevato che il pulsante fisico è stato premuto, Viene visualizzata una pagina vuota sullo schermo. Perché & come risolverlo?
================ Spiegare =====================
ho detto sopra "* indicare il Frag_C di nuovo subito dopo rilevato il mio codice si preme il pulsante fisico *", ecco quello che voglio dire:
in attività:
@Override
public void onBackPressed() {
super.onBackPressed();
//I detect the Physical Back button is pressed & invoke the method to show the popped Frag_C again.
}
* subito dopo che il mio codice ha rilevato che il pulsante fisico è stato premuto, * - cosa significa esattamente? – Luksprog
Si prega di verificare la mia spiegazione in OP – Mellon
Un'ipotesi selvaggia ... si usa il metodo 'showFragment()' con la stessa istanza del frammento? Inoltre sembra un po 'strano, l'utente rimuove il frammento solo per te per mostrarlo di nuovo. – Luksprog