1

この問題に対する多くの答えを見つけましたが、どれもうまくいかないようです。のコードは次のActivityとおりです。

@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
    // Save the user's current game state
    savedInstanceState.putString(CUR_TASK, curTask);

    // Always call the superclass so it can save the view hierarchy state
    super.onSaveInstanceState(savedInstanceState);
}

ご覧のとおりsuper.onSaveInstanceState(savedInstanceState)、最後にあるので、うまくいくはずです。私のレイアウトには があるidので、それも問題ないはずです:

<android.support.v4.widget.DrawerLayout
    android:id="@+id/drawer_layout"

それでも、( を使用して)startActivity別の場所に移動してActivity戻るために呼び出すと、のバンドルは null です。ActionBarsavedInstanceStateonCreate

4

2 に答える 2

1

アクティビティのライフサイクルに関するドキュメントから:

注: onSaveInstanceState() は必ず呼び出されるとは限らないため、アクティビティの一時的な状態 (UI の状態) を記録するためにのみ使用してください。永続的なデータを保存するために使用することはできません。代わりに、 onPause() を使用して、ユーザーがアクティビティを離れたときに永続データ (データベースに保存する必要があるデータなど) を保存する必要があります。

このメソッドonSaveInstanceStateは目的には使用されません。UI の状態を保存するために画面の回転などの場合に使用されます。Activity最初のインテントが 2 番目のインテントを起動するときにインテントを介して値を渡し、 を使用して値を再度渡すロジックを切り替える必要がありますonActivityResult()

さらに、あなたの状態を復元することをお勧めしますonCreate()onRestoreInstanceState(Bundle savedInstanceState)、あなたsavedInstanceState Bundleがnullではないことを常に確信している.

于 2016-02-29T21:46:09.217 に答える
0

アプリをバックグラウンドにして戻ってきたときに onCreate のインスタンスの状態が null でない場合、バック スタックからアクティビティに戻ると、それが再作成されると思います。

アクティビティの起動モードを singleTop に設定して、公平な リンクを作成してください

于 2016-02-29T21:38:28.483 に答える