gpt4 book ai didi

java - 后台任务 fragment 和 "Can not perfom this action after onSaveInstanceState"

转载 作者:行者123 更新时间:2023-12-01 16:33:11 26 4
gpt4 key购买 nike

我在 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:在 onSaveInstanceState 之后无法执行此操作

我想这是因为我在 Activity 的 onSaveInstanceState 和从 Activity 中取消附加 fragment 之间调用了它(或者因为在 getActivity() 调用和 add-fragment 调用之后 Activity 未附加)。

那么我以后怎样才能避免这个错误呢?谢谢!

最佳答案

isFinishing()方法在这里应该对你有帮助。

@Override
protected void onPostExecute(Void result) {
FragmentActivity act = (FragmentActivity) getActivity();
if (act != null && !act.isFinishing() && isAdded()) {
act.getSupportFragmentManager().beginTransaction()
.add(new LoginDialogFragment(), "loginMessage").commit();
}
}

关于java - 后台任务 fragment 和 "Can not perfom this action after onSaveInstanceState",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12342923/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com