我正在使用FragmentPagerAdapter來實現選項卡式界面。我的0片段在創建時創建一個加載器,並嘗試重新連接onActivityCreated()中的加載器。下面是類:LoaderCallbacks.onLoadFinished()從來沒有用FragmentPager調用過?
public class My0thFragment extends Fragment {
private boolean ranOnce = false;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRetainInstance(true);
}
@Override
public void onActivityCreated() {
if (!ranOnce) {
// if the first time we're being created, do an initial load of data.
getLoaderManager().initLoader(500, null, mMyCallback).forceLoad();
ranOnce = true;
} else {
// reconnect?
getLoaderManager().initLoader(500, null, mMyCallback);
// sanity check.
printAllLoaders(getLoaderManager());
}
}
private LoaderManager.LoaderCallbacks<Foo> mMyCallback = new LoaderManager.LoaderCallbacks<Foo>() {
@Override
public Loader<Foo> onCreateLoader(int arg0, Bundle arg1) {
return new FooLoader(getActivity(), arg1);
}
@Override
public void onLoadFinished(Loader<Foo> arg0, Foo arg1) {
Log.e(tag, "onLoadFinished()!");
}
@Override
public void onLoaderReset(Loader<Foo> arg0) {
Log.e(tag, "onLoaderReset()!");
}
};
}
而這裏的情景:
- 應用程序啓動時,在FragmentPagerAdapter創建零片段。
- 調用onActivityCreated()方法,該方法在第一次運行時創建並啓動加載程序。
- 在加載器尚未完成之前,我會快速切換到其他選項卡。
- 我可以看到加載器完成的日誌,但我的回調永遠不會獲得onLoadFinished()回調。我認爲這是因爲片段處於某種分離狀態,這取決於FragmentPagerAdapter的工作方式。
- 返回到第0個選項卡,我看到onActivityCreated()被調用,並且再次調用initLoader()方法。回調仍然不會觸發。
- 此時我可以在加載器管理器中打印所有加載器,並且看到我的加載器仍然位於加載器管理器中。
所以我被困在這裏,我必須做一些錯誤的事情,因爲加載器的東西一定是爲我們的開發人員設計的,以便讓我們的開發人員記住片段生命週期。任何人都可以指出我在這裏做錯了嗎?
謝謝