2

A、B、Cの3つのアクティビティがあるとします。AはBにつながり、Cにつながります。AとBの間を行き来できるようにしたいのですが、Cが開始されたらAとBの両方を終了したいと思います。インテントを介してCを開始するときにBを閉じる方法を理解していますが、Cが開始するときにAも閉じるにはどうすればよいですか?

4

2 に答える 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 に答える