Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从另一个活动中完成活动_Java_Android - Fatal编程技术网

Java 从另一个活动中完成活动

Java 从另一个活动中完成活动,java,android,Java,Android,假设我有3个活动A、B和C。A通向B,B通向C。我希望能够在A和B之间来回移动,但一旦C开始,我想完成A和B。我知道如何在通过intent启动C时关闭B,但如何在C启动时也关闭A?在打开C活动时使用此标志 intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 这将清除C.上面的所有活动,因为 A是您的根(开始)活动,考虑使用 A < /代码>作为调度器。当您想启动C并在它之前(之下)完成所有其他活动时,请执行以下操作: // Launch Activ

假设我有3个活动A、B和C。A通向B,B通向C。我希望能够在A和B之间来回移动,但一旦C开始,我想完成A和B。我知道如何在通过intent启动C时关闭B,但如何在C启动时也关闭A?

在打开C活动时使用此标志

intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

这将清除C.

上面的所有活动,因为<代码> 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);
活动a.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;
}

这里的想法是,您可以使用
FLAG\u ACTIVITY\u CLEAR\u TOP
启动ActivityA(您的调度程序),以便它是任务中唯一的活动,并告诉它您希望它启动的活动。然后它将启动该活动并自行完成。这将只剩下ActivityC在堆栈中。

听起来像是A和B在C之下(即:在C之前),而不是在C之上。在这种情况下,
标记活动\u CLEAR\u TOP
不会有帮助。