Android には、A、B、C といったアクティビティがいくつかあります。
A では、次のコードを使用して B を開きます。
Intent intent = new Intent(this, B.class);
startActivity(intent);
B では、次のコードを使用して C を開きます。
Intent intent = new Intent(this, C.class);
startActivity(intent);
ユーザーが C のボタンをタップすると、A に戻ってバックスタックをクリアします (B と C の両方を閉じます)。ユーザーが戻るボタンを使用するとき、B と C は表示されないので、次のことを試しています。
Intent intent = new Intent(this, A.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
しかし、アクティビティ A に戻ったときに「戻る」ボタンを使用すると、B と C がまだ表示されます。これを回避するにはどうすればよいですか?
ベストアンサー1
追加してみてくださいFLAG_ACTIVITY_NEW_TASK
ドキュメントに記載されているようにFLAG_ACTIVITY_CLEAR_TOP
:
この起動モードは、FLAG_ACTIVITY_NEW_TASK と組み合わせて使用することで効果的に使用することもできます。タスクのルート アクティビティを開始するために使用すると、そのタスクの現在実行中のインスタンスがフォアグラウンドに移動し、ルート状態にクリアされます。これは、たとえば通知マネージャーからアクティビティを起動する場合に特に便利です。
したがって、起動するコードはA
次のようになります。
Intent intent = new Intent(this, A.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
CurrentActivity.this.finish(); // if the activity running has it's own context
// view.getContext().finish() for fragments etc.