web-dev-qa-db-ja.com

android fragment onRestoreInstanceState

何か不足しているのか、FragmentsにonRestoreInstanceState()メソッドがないのですか?そうでない場合、同様のことを達成するにはどうすればよいですか?

114
Shaun

フラグメントにはonRestoreInstanceStateメソッドがありません。

onActivityCreatedでも同じ結果を得ることができます。これは、保存されたインスタンス状態(またはnull)のバンドルを受け取ります。

ソースコードを確認してください here

189
mgv

あなたは答えを受け入れたことを知っていますが、 フラグメントに関する公式ドキュメント を読む必要があります(パラグラフ "フラグメントライフサイクルの処理"):

アクティビティのプロセスが強制終了され、アクティビティの再作成時にフラグメントの状態を復元する必要がある場合、バンドルを使用してフラグメントの状態を保持できます。フラグメントのonSaveInstanceState()コールバック中に状態を保存し、onCreate()、onCreateView()、またはonActivityCreated()の間に状態を復元できます。

したがって、あなたに最も適したものを使用できます:onCreate()onCreateView()、またはonActivityCreated()

40
jimpanzer

フラグメントガイドのListFragment で見つけることができます:

_@Override
public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putInt("curChoice", mCurCheckPosition);
}
_

次のように使用できます:

_@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    if (savedInstanceState != null) {
        // Restore last state for checked position.
        mCurCheckPosition = savedInstanceState.getInt("curChoice", 0);
    }
}
_

onActivityCreated()は、フラグメントがスタックから戻った後に呼び出されます。

25
Gaurav Darji

onViewStateRestored of Fragmentは、onRestoreInstanceState of Activityと同等です。ただし、onActivityCreated(Bundle)の後、onStart()の前に呼び出されます。

13
nhkhanh