Qual è il significato di addToBackStack (null) seguito da commit ()?
Citando documenti:
Chiamando addToBackStack (), la transazione di sostituzione viene salvata nello stack posteriore in modo che l'utente possa invertire la transazione e ripristinare il frammento precedente premendo il pulsante Indietro.
Se aggiungi più modifiche alla transazione (come un altro add () o remove ()) e chiami addToBackStack (), tutte le modifiche applicate prima di chiamare commit () vengono aggiunte allo stack indietro come una singola transazione e il pulsante Indietro li invertirà tutti insieme.
L'ordine in cui aggiungi le modifiche a una FragmentTransaction non ha importanza, tranne:
Devi chiamare per commit()
ultimo. Se stai aggiungendo più frammenti allo stesso contenitore, l'ordine in cui li aggiungi determina l'ordine in cui compaiono nella gerarchia di visualizzazione.
Quindi devi impegnarti alla fine.
Perché è necessario passare un parametro null a addToBackStack?
Non è necessario che sia nullo, può essere una stringa. Se non vuoi, passa semplicemente null.
public abstract FragmentTransaction addToBackStack (nome stringa)
Aggiunto nel livello API 11 Aggiungi questa transazione allo stack indietro. Ciò significa che la transazione verrà ricordata dopo il commit e annullerà la sua operazione quando verrà successivamente rimossa dallo stack.
Parametri nome Un nome facoltativo per questo stato dello stack indietro o null.
Riguardo a:
Sembra che questo codice sia inutile poiché ho eseguito il codice senza l'ultima riga .addToBackStack (null) .commit () e ha funzionato senza problemi
Se vuoi passare al frammento precedente, aggiungilo al backstack. Quindi dipende da se vuoi aggiungere il frammento al backstack.
Come ottenere quel frammento dopo essere stato aggiunto in questo modo?
Hai già l'istanza del frammento firstFragment
. Quindi non so cosa intendi per ottenere il frammento più tardi.
Maggiori informazioni @
http://developer.android.com/guide/components/fragments.html
http://developer.android.com/reference/android/app/FragmentTransaction.html#addToBackStack(java.lang.String)