ユーザーがログインできるアプリの実装 次のような状況があります。ユーザーがログインしている場合はアクションを実行し、そうでない場合は結果のログイン アクティビティを開始し、結果が Activity.RESULT_OK の場合はアクションを実行します。
私の問題は、実行するアクションがDialogFragmentを表示することですが、呼び出し
DialogFragment newFragment = MyDialogFragment.newInstance(mStackLevel);
newFragment.show(ft, "dialog")
onActivityResult コールバックで例外をスローします。
Caused by: java.lang.IllegalStateException:
Can not perform this action after onSaveInstanceState
では、どうすればこれを解決できますか?そこでフラグを立ててonResumeでダイアログを表示することを考えていますが、このソリューションは少し汚いと思います
編集:さらにコードを追加しました(DialogFragmentを表示するためにこの例に従っています
ユーザーがアクションを要求した場合:
...
if (!user.isLogged()){
startActivityForResult(new Intent(cnt, Login.class), REQUEST_LOGIN_FOR_COMMENT);
}
同じフラグメント内
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_LOGIN_FOR_COMMENT && resultCode == Activity.RESULT_OK) {
FragmentTransaction ft = getFragmentManager().beginTransaction();
DialogFragment newFragment = MyDialogFragment.newInstance();
newFragment.show(ft, "dialog")
}
}
また、ユーザーがログイン アクティビティ コールにログインした場合。
setResult(Activity.RESULT_OK);
finish();