5

我想通知回调函数ViewPagerAdapter中的数据集发生了变化。Loader.onLoadFinish

它被阻止是因为片段的状态可能被保存。

来自LoaderManager.LoaderCallbacks.onLoadFinished(Loader loader, D data)方法文档:

请注意,通常不允许应用程序在此调用中提交片段事务,因为它可能在保存活动状态后发生。`

我该如何克服这个问题?如何检查处于哪个状态Activity并提交Fragment事务?

4

2 回答 2

4

我提供了以下解决方案:

方法changeCursorInOtherThread用于onLoadFinishedonLoaderReset

Handler创建于Activity

private Handler mHandler = new Handler();

@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    mSaved = true;

}

private void changeCursorInOtherThread(final Cursor data) {
    if(!mSaved){
        mHandler.post(new Runnable() {

            @Override
            public void run() {
                mViewPagerAdapter.changeCursor(data);
            }
        });
    }
}
于 2011-12-06T08:55:03.693 回答
1

我有一个类似的问题。想展示一个DialogFragment之后onLoadFinished()。正如您所说,不可能在onLoadFinished(). 但后来我意识到,我可以LoaderCallbacksDialogFragment. 它就像一个魅力。我不是Loader在.ActivityFragment

你也可以这样做。除了onLoadFinished()在您的活动中实现之外,您还可以在放置在您的ViewPager. 当然在某些情况下它在 a 中没有意义ViewPager,这取决于您的数据结构。

这里有更多关于这个问题的讨论。

于 2012-03-20T21:53:56.223 回答