10

これは初心者の質問のように感じますが、Android では、向きが変わるとアクティビティが破棄されて再作成され、onCreate()が新たに呼び出されます。内部状態は、savedInstanceState バンドルを介して保存できます。ここまでは順調ですね。

しかし、私のアプリには、通常、一連のパラメーターを渡すstartActivityForResult()を介して別のアクティビティから呼び出されるアクティビティがあります。onCreate() では、ターゲット アクティビティがgetIntent()を実行して、渡されたデータを取得します。問題は、そのアクティビティが画面上にあり、向きを反転するとクラッシュすることです。getIntent()を呼び出すonCreate()コードでクラッシュしています。その場合、他のアクティビティからではなくシステムから呼び出されているため、「取得」するものがないため、クラッシュしていると思います。

これを処理する正しい方法は何ですか? getIntent()を呼び出そうとしないように、方向の変更によりonCreate()が呼び出されていることをどのように知ることができますか? それとも、私はこれについて間違って考えていますか?前もって感謝します。

4

1 に答える 1

8

メソッドで取得した詳細はgetIntent()、savedInstanceState に保存できます。つまり、onSaveInstanceState(Bundle)ストアで使用する情報はonCreate()getIntent(). あなたactivityが新しく作成されたとき、onCreate(Bundle savedInstanceState)メソッドでは、バンドルsavedInstanceStateは null です。つまりonCreate(Bundle savedInstanceState)、バンドルsavedInstanceStateが nullの場合は、 getIntent()else を使用してデータを取得する必要があることを意味します。null でない場合は、方向の変更があり、savedInstanceStateバンドルを使用してデータを取得する必要があることを意味します。

于 2013-06-24T18:10:49.110 に答える