1

onSaveInstanceStateのドキュメントによると:

デフォルトの実装は、UIのインスタンスごとの状態のほとんどを処理します

およびonRestoreInstanceState:

このメソッドのデフォルトの実装は、以前にフリーズされたビューステートの復元を実行します

それが何を意味するのか正確にはわかりません。殺されて復元された後に戻ったときに、ユーザーに表示されるUI画面がすべてのデータとともに自動的に復元されることを意味しますか?もしそうなら、私はそれを見ていません。自分でsetContentViewを実行しない限り、表示されるのは空の画面だけです。

私は意味を誤解していますか?

4

1 に答える 1

4

デフォルトの実装は、ID が定義されているすべてのウィジェットで機能します。たとえば、EditText が 1 つあり、その ID を指定すると、システムは、方向が原因でアクティビティが強制終了されたときにその値を保存し、アクティビティが再作成されるときに EditText 値を復元します。

編集

基本レイアウトが 1 つあり、ビュー階層にいくつかのビューを動的に追加する場合は、保存状態を処理し、状態を自分で復元する必要があります。また、アクティビティが再作成されると、アクティビティの onCreate() メソッドが呼び出されるため、このメソッドでは、最初に作成して動的に追加するすべての追加ビューを設定してから、追加のパラメーターを目的の意図で確認できます。 onCreate() メソッドを取得しています。onSaveInstanceStateこの追加パラメーターは、メソッドに追加パラメーターを追加した場合とまったく同じです。

ということで以下のように実装。

int x = 10;
@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putInt("x", x);
}

そして onCreate メソッドでは、以下のようにこの x パラメータを取得できます

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.xxx);

    if(savedInstanceState.containsKey("x")) {
        x = savedInstanceState.getInt("x");
    }
}
于 2012-11-13T06:28:33.210 に答える