Sto cercando di ottenere l'handle su tutte le nuove API di ActionBar e Fragments. Ho un'attività principale e voglio che gestisca due schede diverse. Sto usando ActionBarSherlock per supportare la versione precedente di ICS.Fragment onResume non viene chiamato dopo il distacco di Fragment e quindi riattaccato
Ogni scheda contiene un proprio Fragment
(ognuno è una sottoclasse di SherlockListFragment
) ho preso a lavorare in fondo bello, ma ho un problema che io sono sicuro che è stupido, ma non riesco a capirlo yet:
La prima volta che viene visualizzato ogni frammento, tutto è OK, l'elenco è popolato e quindi i MenuItem nell'azioneBar.
Ma la seconda volta che viene visualizzata una scheda (dopo swicth e switch-back), non viene popolato l'elenco né gli oggetti del menu ActionBar.
Questo è come mi sto passando le schede:
@Override
public void onTabSelected(Tab tab, FragmentTransaction transaction) {
SherlockListFragment toAttach = // Find the right fragment here...
if (toAttach != null) {
if (toAttach.isAdded() == false) {
transaction.add(R.id.tab_placeholder, toAttach,
REMINDER_FRAGMENT_TAG);
} else {
transaction.attach(toAttach);
}
}
}
E onTabUneselect sto staccando il frammento:
@Override
public void onTabUnselected(Tab tab, FragmentTransaction transaction) {
SherlockListFragment toDetach = // Find the right fragment
if (toDetach != null) {
transaction.detach(toDetach);
}
}
sto popolando le liste e il menu ActionBar in onResume:
@Override
public void onResume() {
super.onResume();
setHasOptionsMenu(true);
fillRemindersList();
}
ho anche provato a onStart e onCreateView ma non ha aiutato ...
Quindi cosa mi manca qui? E se ci sono altri problemi nel mio codice di cui non sono a conoscenza, per favore dillo.
Grazie!
EDIT:
ho appena confermato che onResume
dose non vengono chiamati dopo passo a schede, che è sicuramente sbagliato dal momento che sto staccando e riattaccando ... Perchè sono commutazione schede le Strada sbagliata?
Grazie, spero che questa sia la risposta, anche se non è più rilevante, perché sono passato a List Navigation. (Ha più senso nel mio caso, e funziona perfettamente :)) –
Nel mio caso chiamare 'FragmentTranaction.remove (frammento # 1)' nel frammento # 1 appena prima di chiamare 'FragmentTransaction.commit()' mi aiuta a forzare il frammento # 1 passare attraverso onPause() ... onDestroyView() in sostituzione e passare attraverso onCreateView() ... onResume() quando torno al frammento # 1 premendo il tasto indietro. –