web-dev-qa-db-ja.com

onResume()でonSaveInstanceState()バンドルを取得する方法は?

アクティビティ状態の保存に関連する問題が発生しています。ここSO)でたくさんの質問を検索して読みましたが、質問に対する答えを得ることができませんでした。

ActivityAと2Fragmentsがあります。 Activity Aは、Fragmentsによって示されるデータを保持します。設定Intent用に新しいActivityを起動すると、Activity Aは一時停止(破棄されない)、onPause()およびonSaveInstanceState()メソッドが呼び出されるので、すべてのデータをonSaveInstaceState()に保存します。

戻るボタンを使用して設定から戻ると、Activity Aが再び表示されますが、Activityが破棄されなかったため、onCreate()メソッドが呼び出されず、代わりにonResume()メソッドが呼び出されましたが、Activity Aの変数の状態が失われ、onSaveInstanceState()に保存したBundleにアクセスできません。onCreate()は呼び出されません。

では、onSaveInstanceState()は、画面を回転させるときにのみ役立ちますか? onSaveInstanceState()に保存したすべてのデータにアクセスするにはどうすればよいですか?または、後でonResume()でアクセスするために、ファイルまたはSharedPrefsに保存する必要がありますか?

13
Andres

これは役に立ちますか?
1。 getIntent().putExtras()onStop()を使用して、データをアクティビティのバンドルに保存します。
2。次に、getIntent().getExtras()onResume()を取得します。

そして、バンドルにアクセスする前にnullチェックを行う必要があります:)

26
Zhenghong Wang