Warum FragmentManager ist getBackStackEntryCount() null zurückgeben?
private static void changeFragment(Fragment f, boolean init) {
FragmentTransaction ft = fm.beginTransaction();
ft.replace(R.id.info_content, f,f.getClass().getName());
if(!init){
ft.addToBackStack(null);
}
ft.commit();
}
wenn ich will, um die stack-cout-by-call-fm.getBackStackEntryCount () gibt null zurück?
was ist der Wert von bool init?
was auch immer wahr oder falsch,es ist immer null.
was auch immer wahr oder falsch,es ist immer null.
InformationsquelleAutor beiliubei | 2012-12-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie rufen Sie einen
fm.executePendingTransactions()
nachft.commit()
oder vorfm.getBackStackEntryCount()
. Da die commit () - nur die Zeitpläne der Buchungen für einen späteren Durchgang.getSupportFragmentManager().executePendingTransactions();
nach dem commit das Problem nicht beheben. Können Sie schlagen alle anderen änderungen?Wenn executePendingTransactions() aufgerufen wird, nachdem commit () auf, wird eine Ausnahme geworfen. Wenn aufgerufen wird, bevor der getBackStackEntryCount(), dann zählen ist immer noch null.
InformationsquelleAutor Arvis
Ich hatte ein ähnliches problem, in meinem Fall getFragmentManager().getBackStackEntryCount() war immer die Rückgabe null.
Mein problem war ich habe mit Unterstützung Fragmente:
und ich habe die Prüfung getFragmentManager() backStackEntryCount, das gibt immer null (es ist mit einem anderen fragment-manager):
statt getSupportFragmentManager, das gibt die richtige Nummer:
Hoffe, es hilft!
InformationsquelleAutor Neonigma
Könnte es zu spät sein, um diese Frage zu beantworten. Hoffe, diese Antwort hilft trotzdem jemandem.
Meist hängt es ab, wo Sie eigentlich aufrufen getBackStackEntryCount () - Methode. In meinem Fall war ich der Aufruf dieser Methode nach dem Aufruf von super.onBackPressed(). Im moment wird diese Methode bekam, war aufgerufen, es wurde kein fragment im back-stack. Das ist, warum ich war immer auf Empfang 0.
Richtige Weg ist der Aufruf der Methode onBackPressed() :
InformationsquelleAutor minhazur
Andere Lösung ist die Verwendung FragmentManager.OnBackStackChangedListener
InformationsquelleAutor gilchris
Könnte es zu spät sein, um diese Frage zu beantworten. Hoffe, diese Antwort hilft trotzdem jemandem.
Sollten Sie getBackStackEntryCount () - Methode in onResume().
Ist es dieses:
Glück!
InformationsquelleAutor Jason