わかりましたので、上記の答えはある程度機能しますが、あなたがしていることをするべきではありませんonStop
. あなたが得ている問題は、呼び出し元のアクティビティから取得したエクストラを保存する必要があるという事実から来ているようです。送信する内容が実際に変更されることはなく、常に同じ量のエクストラが送信されると想定できますが、その中には動的データが含まれます。
@Override
onSaveInstanceState(Bundle savedInstanceState) {
super.onSaveInstanceState(savedInstanceState);
Intent intent = getIntent();
savedInstanceState.putStringArrayList("photos", intent.getStringArrayListExtra("some_string"));
}
次に、onCreate で次のようなことができます。
onCreate(Bundle savedInstanceState) {
/*I assume you got stuff places so just fit it in somewhere nice*/
Intent resultIntent = new Intent();
if(savedInstanceState == null) {
//we know here that this is the first call to the second Activity
//So you can just put the Intent that was sent since we know it came from the calling Activity with the original stuff
resultIntent = getIntent();
} else {
resultIntent.putStringArrayListExtra("photos", bundle.getStringArrayListExtra());
}
}
うまくいけば、私がそこで何をしたか理解していただけると思います。基本的に、リロード後も保持する必要があるものすべてにアクセスする方法を提供します。setResult(RESULT_OK, resultIntent);
オリエンテーションの問題が存在しなかった場合、通常ならどこでもできるようになりました。ご覧のとおり、そのためだけに必要なものをオーバーライドする必要があるコードが少なくなります。意味があるかどうか教えてください。ああ、このようにする場合は、向きを無効にするために何も追加しないでください:)