2013-03-15 10 views
6

私は2つのアクティビティ、MainActivityNextActivityを持っています。 MainActivityからNextActivityにアクセスし、Intentを使用してMainActivityに戻ることができます。しかし、その後OnCreateと他のものが呼び出され、すべてが再び初期化されるようになります。私はNextActivityに入る前と同じように、州に戻って行きたいです。Androidは前のアクティビティに戻る

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

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

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

+3

本当にテストを終了しましたか?どうやって?それは方法です – lelloman

+2

finish()は行く方法です。それは助けにならなかったということは何を意味しますか?たぶんあなたは記憶がなくなり、Androidはアクティビティを再構築する必要がありますか? – Zielony

+0

あなたの以前の活動がまだ利用可能であるという保証はないと思います。アクティビティがガベージコレクションされている場合は、環境設定や何らかのストレージを使用して状態を保存する方がよいでしょう。 – Davos555

答えて

25

あなただけ例えば

...バックMainActivityに行く代わりに使用IntentonBackPressed()を呼び出すことができます。

public void onClick() { 
    onBackPressed(); 
} 

注:finish()はあなたが望む正確に何をすべき..

+0

それは答えです@ヨナス –

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。バックスタックの仕組みを見ておくべきです。

あなたのケースでは、あなたのために仕上げる必要があります(戻るボタンを押して)。

注:システムはonCause()メソッド内からfinish()を呼び出すときに、onPause()およびonStop()を呼び出した後でonDestroy()を呼び出します。

アクティビティCが3つあり、アクティビティ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; 
}