Nella mia attività principale, ho una barra delle azioni con NAVIGATION_MODE_TABS
. Il contenuto di ciascuna scheda è un elencoframe.Transazioni frammento, barra delle azioni e backstack
Mi piacerebbe fare in modo che quando si fa clic su un listino, venga visualizzato un nuovo frammento e la modalità della barra delle azioni venga modificata in NAVIGATION_MODE_STANDARD
(in modo che le schede siano ora nascoste).
sono riuscito a farlo funzionare con il seguente codice:
Nel metodo listitemclick:
ActionBar actionBar = getActivity().getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
Fragment albumListFragment = new AlbumListFragment();
albumListFragment.setArguments(bundle);
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(android.R.id.content, albumListFragment);
ft.addToBackStack(null);
// Commit the transaction
ft.commit();
Log.i("FragmentList", "Item clicked: " + id);
Il problema è quando si preme il tasto back, le schede sono ancora andati, e il frammento precedente non torna in vista.
Sto facendo qualcosa di sbagliato .. È qualcosa a che fare con il frammento backstack? Dovrei farlo in un altro modo, o addirittura scavalcare il backpress?
--Edit--
Per chiarezza - che io chiamo addToBackStack quando chiamo fragmenttransaction.replace, ma quando si preme il pulsante Indietro, il frammento precedente non viene ripristinato.
controllare questo collegamento una volta http://www.vogella.com/articles/Android/article.html#fragments_tutorial – shassss
Grazie, ma non particolarmente utile per questa domanda .. –
L'uso di addToBackStack è ciò che si desidera. http://developer.android.com/guide/components/fragments.html#Transactions – Frohnzie