次のアクティビティのシーケンスがあるとします。
A -> B -> C -> D -> E
DI から E にいるときに、いくつかのアクションを実行したい場合は、E をスタックに保持せずに D に戻ります。したがって、D に戻って [戻る] ボタンを押すと、E ではなく C に戻ります。
どうやってするか ???
次のアクティビティのシーケンスがあるとします。
A -> B -> C -> D -> E
DI から E にいるときに、いくつかのアクションを実行したい場合は、E をスタックに保持せずに D に戻ります。したがって、D に戻って [戻る] ボタンを押すと、E ではなく C に戻ります。
どうやってするか ???
これをアクティビティ E の Android マニフェストに追加すると、履歴スタックには表示されません。
android:noHistory="true"
これがあなたのアクティビティスタックのやり方だと思います
A -> B -> C -> D -> E -> D (意図的に E から起動)。
次に、2 番目の D から C に移動します。これを行うには、E で、finish()
D を開始した後に呼び出します。これにより、スタックから E が削除されます。
これを完全に理解しているかどうかはわかりません
D に戻って戻るボタンを押すと、E ではなく C に戻ります
しかし、私があなたがしなければならないことはfinish()
、E で終わったときに電話するだけで、D に戻り、D で戻るときに C に戻ります。これがあなたが話していることではない場合は、質問を明確にしてください. しかし、スタックからクリアされるfinish()
とActivity
、もう一度開始するまで E に戻ることはありません。戻るボタンを押して D から戻ることはありません。
その最も基本的な形でActivities
は、入ってくる方法で互いの上にスタックに置かれます。1 つを残すと、コールfinish()
またはプレスバックによって削除され、その前に置かれたものに移動します (ここであなたの出身地)。それにはもっと多くのことがありますが、それは何が起こるかの非常に基本的なものです.
戻るための新しいインテントを作成する代わりに、this.finish();
不要になったアクティビティを呼び出す必要があります。これは、ユーザーが戻るボタンを押したときにも「呼び出され」ます。また、新しいアクティビティを作成していて、戻るボタンを押したthis.finish();
ときにスキップされる現在のアクティビティthis.startActivity(new Intent(this, ActivityName.class));