2013-04-02 14 views
5

Qualcuno può aiutarmi. Ho un frammento dire FRAMMENT A e lo sto aggiungendo ad un layout in modo dinamico ... Supponiamo di aver aggiunto 3 istanze di FRAGMENT A a quel layout. Poi come posso rimuovere quella istanza di Frammento 3 a livello di codice. Ho provato le ricerche di google e anche un'altra StackOverflow discussioni ma non funzionano ..Come rimuovere i frammenti aggiunti dinamicamente dal layout

per favore mi aiuti

Grazie

risposta

17

è in realtà piuttosto semplice:

diciamo che è stato aggiunto il frammento in questo modo:

fragmentTransac.add(R.id.content, fragA); 

invece, si aggiungerà con un TAG troppo

fragmentTransac.add(R.id.content, new FragA(), "first"); 
// then the other 
fragmentTransac.add(R.id.content, new FragA(), "second"); 

poi per rimuovere:

Fragment f = getFragmentManager().findFragmentByTag("first"); 
if(f!=null) fragmentTransac.remove(f); 
fragmentTransac.commit(); 

felici = codifica]

+0

Ciao, grazie per il vostro aiuto ... ma non funziona ... puoi suggerire un altro modo, – sam

+0

che è il modo. Se non funziona è perché non viene implementato correttamente. Hai capito che l'oggetto 'fragmentTransac' che ho inserito nell'esempio è il FragmentTransaction che di solito è ottenuto da getFragmentManager(). BeginTransaction()? Inoltre se stai usando il pacchetto di compatibilità instad di getFragmentmanager() dovresti chiamare getSupportFragmentManager()? Non ho incluso quei dettagli perché sono piuttosto semplici. – Budius

+0

tu metti d'accordo quelle cose ... ho messo come thisFragment f = getSupportFragmentManager(). FindFragmentByTag ("hi"); \t FragmentTransaction ft = getSupportFragmentManager(). BeginTransaction(); \t ft.remove (f); – sam

Problemi correlati