6

私には2つの活動がMainActivityありNextActivityます。からMainActivityに移動してから、に戻るためにNextActivity使用できます。しかし、その後、他のものが呼び出され、すべてが再び初期化されたようになります。入る前の状態に戻したいです。IntentMainActivityOnCreateNextActivity

私は自分の電話の物理的な戻るボタンを使用すれば、まさにこれが達成されることに気づきました。

では、戻るボタンのようにアクティビティに戻るにはどうすればよいですか?

PS。私はテストしましfinish()たが、助けにはなりませんでした。

4

2 に答える 2

25

onBackPressed()使用する代わりに電話して.. Intentに戻ることができます。MainActivity

例えば:

public void onClick() {
    onBackPressed();
}

注:finish()あなたが望むことを正確に行う必要があります。

于 2013-03-15T11:10:09.820 に答える
4

2つのアクティビティAとBがあると仮定します。AからBに移動します。Aはバックグラウンドに移動します。

Bはバックスタックに置かれ、Bがフォーカスを取ります。戻るボタンをクリックすると、アクティビティBがバックスタックから飛び出します。アクティビティAが再開されます。

注:複数のタスクを一度にバックグラウンドで保持できます。ただし、ユーザーが同時に多くのバックグラウンドタスクを実行している場合、システムはメモリを回復するためにバックグラウンドアクティビティの破棄を開始し、アクティビティの状態が失われる可能性があります。アクティビティの状態については、次のセクションを参照してください。

http://developer.android.com/training/basics/activity-lifecycle/starting.html。一度破壊されたアクティビティは再作成する必要があります。画面の向きが変わると、アクティビティが破棄されて再作成されます。

http://developer.android.com/training/basics/activity-lifecycle/starting.html

http://developer.android.com/guide/components/tasks-and-back-stack.html。バックスタックがどのように機能するかを確認する必要があります。

あなたの場合、仕上げはあなたのために働くはずです(戻るボタンを押すことによって)。

注:システムは、onCreate()メソッド内からfinish()を呼び出す場合、1つを除くすべての状況でonPause()およびonStop()を既に呼び出した後にonDestroy()を呼び出します。

3番目のアクティビティCがあり、アクティビティAに移動するとします。

 @Override
 public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
    onBackPressed();

}

return super.onKeyDown(keyCode, event);
}

 public void onBackPressed() {
Intent myIntent = new Intent(ActivityC.this, MainActivity.class);
myIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);// clear back stack
startActivity(myIntent);
finish();
return;
}
于 2013-03-15T11:24:11.030 に答える