Android FragmentPagerAdapter和游标加载器

时间:2012-12-21 11:08:36

标签: android cursor loader fragmentpageradapter

我正在尝试实现一个自定义游标加载器,它将我的数据库中的数据加载到fragmentpageradapter中托管的片段中。 我有一个Activity(扩展SherlockFragmentActivity),它有一个Fragment,它实现了一个fragmentpageradapter(通过新的嵌套片段)。 fragmentpageradapter下的每个片段都实现了一个自定义游标加载器,可以生成要显示的数据。我在onActivityCreated中启动加载器并在onResume上重新启动它并在onDestroy上销毁它。让我说我在第1页,寻呼机自动启动第2页(更流畅的交易的默认行为)问题是,如果我添加要在第2页显示的项目(从操作栏),我在第1页,当我滑到页面加载器不会刷新数据。

任何想法? 谢谢!

1 个答案:

答案 0 :(得分:0)

没有必要停止加载器,因为LoaderManager和FragmentManager一起工作来为您处理。话虽如此,我不确定这是你问题的原因。在过去的一个月里,我发现装载机存在许多错误。尽管如此,其中大部分与装载者没有更新有关。

我知道加载器存在错误但我没有时间跟踪它。以下是建议的解决方法。试一试。

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);

    // Start or restart the loader.  Note: this is a work-around to an Android
    // bug with loaders where they are not always properly activated with life-cycle
    // changes in the activity/fragment.
    Loader<Object> loader = getLoaderManager().getLoader((int) mId);
    if (loader != null && ! loader.isReset()) {
        mStatusLoader = (StatusItemLoader) getLoaderManager().restartLoader(
                                                    (int) mId, null, mLoadListener);
    } else {
        mStatusLoader = (StatusItemLoader) getLoaderManager().initLoader(
                                                    (int) mId, null, mLoadListener);
    }
}