6

アプリケーションの状態を保存して、閉じた状態から再度開いたときに最後のフラグメントが表示され、バックスタックが保持されるようにしたいと思います。向きを変えたり、システムがアプリを強制終了してリソースを解放したりするときだけでなく、アプリケーションを閉じるたびにこの状態を保持したいと思います(onSaveInstanceState()/を使用する場合のように) onRestoreInstanceState()

これまでのところ、状態をSharedPreferencesに保存し、後で復元することで、以前のフラグメントとその状態を計画どおりに復元することができました。ただし、これはフラグメントのバックスタックを保持しないため、ユーザーがアプリケーションをロードし、戻るボタンを押してアプリケーションフローの「上」に移動すると、アプリは上に移動せずに終了します。

この時点で必要なのは、システムの場合と同じように、アプリケーションのバックスタックにアクセスし、必要に応じてバンドルに保存できるようにすることですonSaveInstanceState()。のドキュメントを読みましたFragmentManager.saveFragmentInstanceState()が、これを使用して目標を達成する方法がわかりません。誰かが私を正しい方向に向けることができますか?

Android互換ライブラリのフラグメント実装を使用しています。

4

1 に答える 1

5

私の知る限り、Androidシステムではタスクのバックスタックを取得できませんが、実行中のすべてのタスクの先頭にしか表示できません。したがって、バックスタックActivityを維持する独自のメカニズムを実装する必要があります。Activitiesの実装は、特にその方法LocalActivityManagerに役立つ可能性があります。saveInstanceState()したがって、同様のことを行い、必要なonSaveInstanceState(Bundle)ときにいつでもバックスタックでアクティビティを呼び出してから永続化することがBundleできます(たとえば、ファイル内)。を使用する場合Fragmentsは、バックスタックも維持する必要があります。

おそらく、android:alwaysRetainTaskStateバックスタックの管理に飛び込むのではなく、問題を解決するのに役立つかもしれません。

于 2012-03-30T08:33:41.203 に答える