1

私のアプリはアクティビティ (現在は FragmentActivity のサブクラスですが、それは問題ではないと思います) をアクティビティ A と呼びましょう。

その中で、ボタンは、特別なフラグなしで startActivity() を使用してインテントを介して開始することにより、(たとえば) アクティビティ B にナビゲートします。

どちらのアクティビティも、マニフェストに特別なフラグ (SingleTop) などを持たず、finish() などを呼び出しません。つまり、異常なことは何もありません。

アクティビティ A のメソッド onSaveInstanceState() get が呼び出され、状態情報を保存します。

アクティビティ BI で BACK キーを押して、アクティビティ A に戻ります。

onCreate() メソッドが呼び出されますが、「savedInstanceState」のバンドルが null であるため、以前に保存した状態を再構築できません。

私が間違っていること、および状態を確実に戻す方法について考えてください。

ところで:構成の変更(ローテーションなど)では、すべて正常に動作します....

4

2 に答える 2

1

onCreate()戻るキーを押しただけでアクティビティ A に戻ったときに が呼び出されるのは奇妙に思えます。一般に、既存のアクティビティを再作成しようとせずに表示する必要があります。onSaveInstanceState()また、他のアクティビティを開始したときに呼び出されるのも奇妙だと思います。実際、ドキュメントには、アクティビティ B の開始時におそらく呼び出されないと記載されています。onSaveInstanceState()

例: onPause() が呼び出され、onSaveInstanceState(Bundle) が呼び出されない場合は、アクティビティ B がアクティビティ A の前に起動されたときです: システムは、アクティビティ A が B の存続期間中に強制終了されない場合、アクティビティ A で onSaveInstanceState(Bundle) を呼び出すことを回避できます。 A のユーザー インターフェイスの状態はそのまま維持されるためです。

ここから。

何か他のことが起こっていると思います。

于 2012-09-05T15:55:56.173 に答える
0

アクティビティAは破棄されなかったため、onCreate()を呼び出さないでください。コードを載せていただけませんか?

于 2012-09-05T16:17:54.880 に答える