再開すると、私のアクティビティがDialogFragment
と表示されることがあります。このfragment transactions tutorialに示唆されているように、私はで恐怖症を避けるためにこれをやっていますIllegalStateException: Can not perform this action after onSaveInstanceState
。ほとんどの場合、すべてが順調です。onSaveInstanceState()の後にonResumeFragments()が呼び出されます。
しかし、私の活動には、特定の環境設定が変更されたときにアクティビティを再開するOnSharedPreferenceChangeListener
があります。リスナーをトリガーする設定変更は、Spinner
で選択を行うことによって発生します。アクティビティがrecreate()
を呼び出して再開すると、IllegalStateException
が返されます。私は私が私のインスタンスの状態を保存したいのでrecreate()
を使用することを好むだろう
finish();
final Intent intent = new Intent(StartActivity.this, StartActivity.class);
startActivity(intent);
:活動は、このように自分自身を再起動した場合でも、全く問題ありません。 onSaveInstanceState()
の後にonResumeFragments()
が呼び出されるのはなぜですか?
'recreate()'で再起動したときの 'IllegalStateException'メッセージは'トップレベルのアクティビティでしか呼び出せません 'でしょうか? – sakiM
@sakiM "onSaveInstanceStateの後にこのアクションを実行できません" –
このメッセージは 'recreate()'からスローされないようですが、再作成の直接的な例外は ''トップレベルアクティビティ ''または '' 'メインスレッド「 '' – sakiM