2014-05-19 14 views
5

Voglio rimuovere il frammento centrale della pila di frammenti. io ho stack con frammenti A, B, C, D in questo caso voglio rimuovere B o C senza rimosso D.Rimuovi frammento centrale da FragmentStack

C'è un modo per farlo? perché se rimuovo D e lo ri-aggiunto dopo aver rimosso B o C ci vorrà del tempo per creare la vista e aggiungere nuovamente tutti i dettagli.

+0

che cosa hai fatto finora? metti un pezzo di codice su cui hai lavorato in modo che possiamo aiutarti meglio. –

+0

@ OnurA. scusa se non ho scritto alcun codice ho usato solo i metodi "aggiungi", "nascondi" e "rimuovi" della transizione dei frammenti. Grazie per il replay! – AJit

risposta

3

Utilizzare i tag mentre si chiamano i frammenti con ciascun tag con un tag univoco. Quindi rimuovi i frammenti dalla pila di frammenti usando questo tag.

Passare da frammenti in questo modo:

public void switchContent(final Fragment fragment, final String TAG) { 
     CgUtils.showLog(TAG, "in switchcontent with fragment passed " + fragment); 
     mContentFragment = fragment; 
     Handler h = new Handler(); 
     h.postDelayed(new Runnable() { 
      public void run() { 
       getSupportFragmentManager().beginTransaction().replace(R.id.content_frame, fragment, TAG) 
         .commitAllowingStateLoss(); 
       fragment.setRetainInstance(true); 
       getSlidingMenu().showContent(); 
       // .commit(); 
      } 
     }, 50); 
    } 

es:

FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
    fragmentTransaction.remove(fragmentManager.findFragmentByTag(tag)).commit(); 
+0

Molto diverso da quello che pensavo, ma ho bisogno di dargli una possibilità, il mio vero problema è che devo gestire il backstack dopo la selezione del prossimo frammento da parte dell'utente, BTW @ user2564055 Grazie per il replay rapido :) – AJit

+0

.remove sta funzionando per rimuovere il frammento tra uno stack, ma ancora BackStackEntry è lì così quando premi indietro che avrà effetto come frammento vuoto. al momento dell'aggiunta del frammento ho sempre bisogno di aggiungerlo al backstack .. – AJit