我在 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() 调用和 add-fragment 调用之后活动没有附加。
那么以后如何避免这个错误呢?谢谢!