我想通知回调函数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在.ActivityFragment
你也可以这样做。除了onLoadFinished()在您的活动中实现之外,您还可以在放置在您的ViewPager. 当然在某些情况下它在 a 中没有意义ViewPager,这取决于您的数据结构。
这里有更多关于这个问题的讨论。