4

戻るボタンをオーバーライドするアプリケーションを開発しています。チェックボックスを作りました。クリックすると、私は意図を呼び出しています:

startActivityforResult();

また、アクティビティの状態を次のように維持します。

@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
  super.onSaveInstanceState(savedInstanceState);
  savedInstanceState.putBoolean("checkbox", checkbox.isChecked());
}

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
  super.onRestoreInstanceState(savedInstanceState);
  checkbox_state = savedInstanceState.getBoolean("checkbox");
}

正常に動作し、状態が維持されます。編集テキストに値を入力していることを意味します。チェックボックスをクリックすると、結果の新しいアクティビティが呼び出され、最初のアクティビティに戻る間、状態は維持されます。

しかし、デバイスの戻るボタンをクリックすると、2 番目のアクティビティから状態が維持されません。

では、戻るボタンの状態を維持するにはどうすればよいですか。検索しましたが、満足のいく解決策が見つかりませんでした。私に提案してください。

4

2 に答える 2

1

新しいアクティビティを開始すると、現在のアクティビティが非表示になり、新しいアクティビティがスタックの一番上に配置されます。新しいアクティビティで戻るボタンを押すと、最初のアクティビティが現在の状態で表示されます (破棄されていない場合は、finish() を呼び出します)。チェック済み。方向が変更されるか、アクティビティが破棄されない限り、アクティビティの状態を保存する必要はありません。

チェックボックスの状態に影響を与える onActivityResult または onResume() メソッドで何もしていませんか? 最初に両方のメソッドのすべてのコードをコメントアウトし、チェック ボックスがその状態を保持しているかどうかを確認することをお勧めします。また、新しいアクティビティを開始する前に、コード自体がチェックボックスをオフにしないようにすることもできますか?

于 2013-03-22T12:36:45.067 に答える