A、B、Cの3つのアクティビティがあるとします。AはBにつながり、Cにつながります。AとBの間を行き来できるようにしたいのですが、Cが開始されたらAとBの両方を終了したいと思います。インテントを介してCを開始するときにBを閉じる方法を理解していますが、Cが開始するときにAも閉じるにはどうすればよいですか?
2 に答える
1
C アクティビティを開くときに、このフラグを使用します。
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
これにより、C 上のすべてのアクティビティがクリアされます。
于 2013-03-21T19:27:15.263 に答える
0
A
はルート(開始)アクティビティであるため、ディスパッチャとしての使用を検討してA
ください。C
その前(下)に他のすべてのアクティビティを開始して終了する場合は、次のようにします。
// Launch ActivityA (our dispatcher)
Intent intent = new Intent(this, ActivityA.class);
// Setting CLEAR_TOP ensures that all other activities on top of ActivityA will be finished
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
// Add an extra telling ActivityA that it should launch ActivityC
intent.putExtra("startActivityC", true);
startActivity(intent);
これをActivityA.onCreate()
行うには:
super.onCreate();
Intent intent = getIntent();
if (intent.hasExtra("startActivityC")) {
// Need to start ActivityC from here
startActivity(new Intent(this, ActivityC.class));
// Finish this activity so C is the only one in the task
finish();
// Return so no further code gets executed in onCreate()
return;
}
ここでの考え方は、ActivityA(ディスパッチャー)を使用して起動しFLAG_ACTIVITY_CLEAR_TOP
、それがタスク内の唯一のアクティビティであり、起動するアクティビティを指定することです。その後、そのアクティビティを起動して終了します。これにより、スタックにはActivityCのみが残ります。
于 2013-03-21T21:03:58.187 に答える