我想通知回调函数ViewPagerAdapter
中的数据集发生了变化。Loader.onLoadFinish
它被阻止是因为片段的状态可能被保存。
来自LoaderManager.LoaderCallbacks.onLoadFinished(Loader loader, D data)方法文档:
请注意,通常不允许应用程序在此调用中提交片段事务,因为它可能在保存活动状态后发生。`
我该如何克服这个问题?如何检查处于哪个状态Activity
并提交Fragment
事务?
我想通知回调函数ViewPagerAdapter
中的数据集发生了变化。Loader.onLoadFinish
它被阻止是因为片段的状态可能被保存。
来自LoaderManager.LoaderCallbacks.onLoadFinished(Loader loader, D data)方法文档:
请注意,通常不允许应用程序在此调用中提交片段事务,因为它可能在保存活动状态后发生。`
我该如何克服这个问题?如何检查处于哪个状态Activity
并提交Fragment
事务?
我提供了以下解决方案:
方法changeCursorInOtherThread
用于onLoadFinished
和onLoaderReset
。
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);
}
});
}
}
我有一个类似的问题。想展示一个DialogFragment
之后onLoadFinished()
。正如您所说,不可能在onLoadFinished()
. 但后来我意识到,我可以LoaderCallbacks
在DialogFragment
. 它就像一个魅力。我不是Loader
在.Activity
Fragment
你也可以这样做。除了onLoadFinished()
在您的活动中实现之外,您还可以在放置在您的ViewPager
. 当然在某些情况下它在 a 中没有意义ViewPager
,这取决于您的数据结构。
这里有更多关于这个问题的讨论。