5

Ich versuche, den Griff auf alle neuen ActionBar und Fragmente API zu erhalten. Ich habe eine Hauptaktivität, und ich möchte, dass es zwei verschiedene Registerkarten verwaltet. Ich bin mit dem ActionBarSherlock um ältere Version als ICS zu unterstützen.Fragment onResume erhält nicht aufgerufen, nachdem Fragment wird abgelöst wird und dann wieder angebracht

Jede Registerkarte enthält eine eigene Fragment (jeweils eine Unterklasse von SherlockListFragment ist), ich habe es im Grunde schön zu arbeiten, aber ich habe ein Problem, dass ich sicher bin, dass dumm ist, aber ich kann es nicht heraus noch:

auf der ersten Zeit wird jedes Fragment gezeigt, ist alles in Ordnung, wird die Liste aufgefüllt und so die MenuItems im ActionBar.

Aber das zweite Mal, wenn Sie eine Registerkarte sehen (nach swicth und Rückschalt) Weder die Liste bevölkert bekommen, noch die ActionBar MenuItems. Diese

ist, wie ich das Umschalten der Registerkarten:

@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); 
     } 
    } 
} 

Und onTabUneselect ich Abnehmen des Fragment:

@Override 
public void onTabUnselected(Tab tab, FragmentTransaction transaction) { 
    SherlockListFragment toDetach = // Find the right fragment 
    if (toDetach != null) { 
     transaction.detach(toDetach); 
    } 
} 

ich die Listen bevölkern und die ActionBar Menü in onResume:

@Override 
public void onResume() { 
    super.onResume(); 
    setHasOptionsMenu(true); 
    fillRemindersList(); 
} 

ich versuchte es auch in onStart und onCreateView aber es hat nicht geholfen ...

Was fehle ich hier? Und wenn es andere Probleme in meinem Code gibt, denen ich nicht bewusst bin, bitte erzählen.

Danke!

EDIT:

ich gerade bestätigt, dass onResume dosen't erhalten aufgerufen, nachdem ich Registerkarten wechseln, was definitiv falsch ist, da ich Abnehmen und wieder Anbringen sie ... Bin ich Wechseln der Reiter die Falsche Weg?

Antwort

2

Versuchen Sie es mit transaction.remove (Fragment) in onTabUnselected und transaction.replace in onTabSelected. Weder

+0

Danke, ich hoffe, dass dies die Antwort ist, obwohl sie nicht mehr relevant ist, weil ich zu List Navigation gewechselt bin. (Macht mehr Sinn in meinem Fall und funktioniert perfekt :)) –

+0

In meinem Fall 'FragmentTranaction.remove (Fragment # 1)' in Fragment # 1 kurz vor dem Aufruf von 'FragmentTransaction.commit()' aufrufen hilft mir, Fragment # 1 zu erzwingen gehe onPause() ... onDestroyView() beim Ersetzen durch und gehe durchCreateView() ... onResume(), wenn ich zu Fragment # 1 zurückkehre, indem ich den Zurück-Knopf drücke. –

0

Mit der beginTransaction() und commit() außerhalb dieses Codes nehme ich an oder hast du vergessen? Sie können einen Trick aus den Proben verwendet siehe auch: https://github.com/JakeWharton/ActionBarSherlock/blob/master/samples/fragments/src/com/actionbarsherlock/sample/fragments/FragmentTabs.java

+0

! Wie Sie sehen können, implementiere ich die ActionBar.TabListener-Schnittstelle. In den TabListener-Callbacks erhalten Sie eine FragmentTransaction, die sofort verwendet werden kann (das heißt - "begined") und Sie ** nicht ** Call Commit, wie die Dokumentation explizit sagt. Außerdem werden die Fragmente getauscht, also ist es nicht so ... –

+0

Ah, tut mir wirklich leid. –

Verwandte Themen