Nessuna delle altre domande che ho letto su StackOverflow è stata in grado di aiutare con il mio problema. Per quanto posso dire, sto facendo tutto correttamente.App di chiusura pulsante posteriore anche quando si utilizza FragmentTransaction.addToBackStack()
Ho un flusso principale/dettaglio con frammenti.
Alla creazione dell'attività principale, il frammento maestro è caricato con il codice seguente:
Fragment frag;
frag = new MainListFragment();//<-- **the master fragment**
FragmentManager fm = getFragmentManager();
FragmentTransaction transaction = fm.beginTransaction();
transaction.replace(R.id.fragment_container, frag);
Log.d("My Debug Bitches", "stack:" + fm.getBackStackEntryCount());
transaction.commit();
Il frammento principale ha un ListView
; Cliccando su un elemento dell'elenco porta in primo piano i dettagli frammentano in questo modo:
@Override
public void onListItemClick(ListView listView, View view, int position, long id) {
super.onListItemClick(listView, view, position, id);
FragmentManager fm = getFragmentManager();
FragmentTransaction transaction = fm.beginTransaction();
SubListFragment frag = new SubListFragment();//<-- **the detail fragment**
transaction.replace(R.id.fragment_container, frag);
transaction.addToBackStack(null);
transaction.commit();
fm.executePendingTransactions();
Log.d("My Debug Bitches", "stack:" + fm.getBackStackEntryCount());
}
Ora, secondo LogCat, i BackStackEntryCount
modifiche 0-1 dopo naviga da maestro frammento del dettaglio frammento:
Quindi, perché quando clicco sul pulsante Indietro mentre sono nel frammento di dettagli, l'app si chiude invece di tornare al frammento principale ??????????
wow, grazie. Stavo operando sotto l'illusione che 'onBackPressed()' fornisce automaticamente questa funzionalità e deve essere solo sovrascritta quando si desiderano azioni speciali. – scottyseus
@ScottScooterWeidenkopf: Popping a 'Fragment' È un'azione speciale. Il pulsante BACK era molto tempo prima che 'Fragments' e cambiandogli il comportamento predefinito nel codice base di Android non sarebbe stata una buona idea per ragioni di compatibilità con le versioni precedenti. Da qui il motivo per cui devi gestire le cose da solo. – Squonk
Ok questo ha senso. Sono un newb quindi trascuro facilmente questi dettagli. Grazie per l'aiuto. – scottyseus