Ho un probleam e non riesco a trovare una soluzione da nessuna parte.addToBackStack non funziona, chiude l'attività invece di scontrare i frammenti
La mia app non torna al frammento precedente quando premo il pulsante Indietro, invece si chiude l'attività.
Ho un'attività che visualizza 4 frammenti: [1], [2], [3], [4]. Posso passare tra i primi 3 frammenti con la barra delle azioni, non voglio aggiungerli allo stack posteriore.
Frammento [4] è una vista dettagliata di un elemento selezionato in frammento [3]. Quando torno indietro [4] voglio tornare al frammento [3], non chiudendo l'app.
Le transizioni sono fatti in questo modo dall'attività in cui sono collocati frammenti:
private void replaceFragment(Fragment fragment, boolean toBackStack){
if(fragment != null){
FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.container, fragment);
if(toBackStack)
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
}
}
dove toBackStack è sempre false tranne quando la transizione è dallo [3] a [4].
Se si passa a BackStack true in ogni transizione, l'attività si chiude comunque.
Quindi piuttosto che mantenere lo stato in attività potrebbe essere meglio farlo in onBackPressed() se (getFragmentManager() .getBackStackEntryCount()> 0) getFragmentManager(). popBackStack(); – toidiu