2012-07-03 10 views
44

現在、私は新しいActivityを開始し、現時点ではfinishを呼び出しています。Androidで新しいアクティビティを開始し、現在のアクティビティを終了しますか?

Intentに渡すことができるフラグは、コードから手動でfinishに電話する必要なく、現在完了できるActivityですか?

+4

'仕上げ()'あなたを助けることはできません。

Intent.FLAG_ACTIVITY_NO_HISTORY読み取りの使用方法の詳細を知るには? –

答えて

102

あなたはfinish()メソッドを使用するか、使用することができます。

android:noHistory="true" 

をそしてもうfinish()を呼び出す必要はありません。

<activity android:name=".ClassName" android:noHistory="true" ... /> 
+5

あなたはこれがあなたの言うことを確信していますか? android docs:FLAG_ACTIVITY_NO_HISTORY 設定した場合、新しいアクティビティは履歴スタックに保持されません。ユーザーがそれから離れて移動すると、アクティビティは終了します。これはnoHistory属性で設定することもできます。 – 10s

+14

android:noHistory = "true"はfinish()と同じではありません! –

+1

finish()を使用するだけです。noHistoryを使用しないでください。 –

4

FLAG_ACTIVITY_NO_HISTORYユーザーが別のユーザーに行った後に終了するアクティビティを開始するとき。

http://developer.android.com/reference/android/content/Intent.html#FLAG%5FACTIVITY%5FNO%5FHISTORY

+1

FLAG_ACTIVITY_NO_HISTORYは逆です。新しいアクティビティは履歴に保存されませんが、以前のアクティビティは終了します。 – pixel

+2

はい、それは私が言ったことです。あなたが終了したいアクティビティ、アクティビティAからアクセスされたアクティビティBアクティビティAを開始するには、ユーザがアクティビティaからアクティビティBへ移動したときアクティビティAが終了したときにアクティビティAを終了します。私が答えて言ったように: "...あなたが終了したい活動を開始するとき..."。それは確認されたものと同じ答えです。 – 10s

52

使用このようなfinish

Intent i = new Intent(Main_Menu.this, NextActivity.class); 
finish(); //Kill the activity from which you will go to next activity 
startActivity(i); 

FLAG_ACTIVITY_NO_HISTORYは反対のことを行います。新しい活動は履歴に保存されませんが、OPは前の活動が終了することを望みます。 http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_NO_HISTORY

+3

FLAG_ACTIVITY_NO_HISTORYは反対です。新しいアクティビティは履歴に保存されませんが、以前のアクティビティは終了します。 – pixel

+8

'finish()'は現在のアクティビティを強制終了しませんか?次の行startActivity(i)にどのように到達すると思いますか?私にとっては危険で予期しないように見える – Michael

+3

@Michael Calls are async startActivity()が呼び出されます。 – tomi

関連する問題