我想通知ViewPagerAdapter
回调函数中的数据集已更改。
因为碎片的状态可能被保存,所以它被阻止。
从LoaderManager.LoaderCallbacks.onLoadFinished(Loader loader, D data)方法文档:
请注意,通常不允许应用程序在此调用中提交片段事务,因为它可能在保存活动的状态后发生。`
我怎样才能克服这个问题?如何检查Loader.onLoadFinish
处于哪个状态并提交Activity
事务?
最佳答案
我有以下解决方案:
方法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);
}
});
}
}