【发布时间】:2012-09-09 20:56:55
【问题描述】:
我在 Fragment 中有以下 AsyncTask(为了清楚地显示错误而简化了示例):
private class LoginTask extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... params) {
// Do network login
return null;
}
@Override
protected void onPostExecute(Void result) {
FragmentActivity act = (FragmentActivity) getActivity();
if (act != null && isAdded()) {
act.getSupportFragmentManager().beginTransaction()
.add(new LoginDialogFragment(), "loginMessage").commit();
}
}
}
有一次,在任务运行时离开应用,我收到了IllegalStateException: Can not perform this action after onSaveInstanceState。
我想这是因为我在活动的 onSaveInstanceState 和从活动中取消附加片段之间调用了它(或者因为在 getActivity() 调用和添加片段调用之后活动没有附加。
那么我以后怎样才能避免这个错误呢?谢谢!
【问题讨论】:
标签: java android multithreading android-fragments