Mein Code enthält eine Aktivität mit einem FragmentPagerAdapter, der bei Bedarf 'n' Fragmente erstellt. Aktivität hat einen Loader und jedes Fragment hat seinen eigenen Loader. Alle Lader haben eine eindeutige ID. (Der Ladevorgang von Activity bestimmt tatsächlich die Anzahl der Seiten im Adapter)
Ich bekomme immer wieder diese Warnung und kann nicht sagen, was das verursacht. Es scheint nicht kritisch zu sein, auch wenn man den Code des LoaderManger betrachtet, der diese Warnung wirft, aber dennoch - Warnungen sind normalerweise Zeichen für Fehler.
Hatte ursprünglich FragmentStatePagerAdapter verwendet und dann zu FragmentPagerAdapter verschoben, wobei ich dachte, dass das irgendwie das Problem sein könnte - aber offensichtlich nicht.
Buchungscode würde dies wirklich komplizieren und sehr wenig hinzufügen.
Irgendwelche Gedanken?
Ich habe gerade ein paar Stunden Debugging-Sitzung mit der Support-Bibliothek beendet.
TL; DR: KEIN getLoaderManager
in Fragment.onCreate
aufrufen, verwenden onActivityCreated
!
(Dies bedeutet, dass Sie initLoader
nicht vor onActivityCreated
ausführen können)
Fragment.getLoaderManager()
wird langsam eine LoaderManager
-Instanz für Sie von der Aktivität erhalten. Damit dies jedoch gültig ist, muss das Fragment bereits aktiviert sein ( FragmentManager.makeActive
), was zwei wichtige Dinge impliziert:
FragmentManager.addFragment
) mWho
) makeActive
ruft Fragment.setIndex
auf) Letzteres ist wirklich wichtig, denn wenn Sie Fragment.getLoaderManager()
aufrufen, fragt wiederum FragmentActivity.getLoaderManager(who, ...)
nach einem echten Manager. Beim Aufruf von Fragment.onCreate()
ist der Aufruf makeActive
noch nicht erfolgt, daher erhalten Sie eine LoaderManagerImpl
mit mWho == null
zurück, was schlecht ist, weil das Framework die LoaderManager
Instanz jedem Fragment, das ähnlich ist, neu zuweist Lebenszyklus.
Aufgrund dieser Neuzuweisung wurde LoaderManager
bereits von einem Fragment gestartet, aber ein anderes versucht es ebenfalls zu starten, da die Aktivität nicht wusste, welches Fragment fraglich ist, keines von beiden hatte ihre Identität ( mWho
) noch.
Tags und Links android android-loadermanager