1
public void onSaveInstanceState(Bundle outState) 
{
    super.onSaveInstanceState(outState);
    outState.putInt("x", x);
}

バンドルを保存すると、バンドル変数は正確にどこに保存されますか? どこにも見つからない

4

3 に答える 3

1

まあ、あなたがそれを見つけるとは思わないし、どこかで直接参照されるとは思わない.

ただし、そのコンテンツはonCreate(savedInstanceState)、アクティビティが再作成されたときに利用可能になります。ドキュメントから引用:savedInstanceState: If the activity is being re-initialized after previously being shut down then this Bundle contains the data it most recently supplied in onSaveInstanceState(Bundle). Note: Otherwise it is null

そのコンテンツを探す別の場所はonRestoreInstanceState(savedInstanceState)

于 2013-09-24T09:40:20.617 に答える
1

android リファレンスに加えて、ソース コードを読んで、ここで何が起こったのかを理解することができます。

protected void onSaveInstanceState(Bundle outState) {
        outState.putBundle(WINDOW_HIERARCHY_TAG, mWindow.saveHierarchyState());
        Parcelable p = mFragments.saveAllState();
        if (p != null) {
            outState.putParcelable(FRAGMENTS_TAG, p);
        }
        getApplication().dispatchActivitySaveInstanceState(this, outState);
    }

ソース コードでは、状態が によって管理されることは明らかApplicationです。アクティビティが破棄されると、アプリケーションは関連する状態を保存するのに役立ちます。しかし、アプリケーションが強制終了されたという状況に遭遇した場合、すべての状態が失われていることがわかります。したがって、すべての状態はファイルのような設定ではなく、メモリに保持されると思います。

于 2013-09-24T10:01:31.027 に答える
0

intに保存するには、int、string、または必要なものを設定する必要があると思います。例を示しましょう

public void onSaveInstanceState(Bundle state){
super.onSaveInstanceState(state);
Int i = 1;
state.putInt("s",i);


}
于 2013-09-24T09:43:29.320 に答える