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
.
おそらく、Activiy の onSaveInstanceState とアクティビティからのフラグメントのアタッチ解除の間 (または、getActivity() 呼び出しと add-fragment 呼び出しの後にアクティビティがアタッチされていないため) を呼び出したためだと思います。
では、今後このエラーを回避するにはどうすればよいですか? ありがとう!