Android:在backstack中删除Activity

eyh26e7m  于 2023-01-28  发布在  Android
关注(0)|答案(6)|浏览(114)

我有4个活动,假设为A-〉B-〉C-〉D。在每个A、B、C活动中,用户需要输入数据,所有数据都将发送到C活动中的服务器。如果用户数据正确,他将转到D活动,所有活动A、B、C从堆栈中删除。如果数据是正确的,我需要给予用户重新输入数据,即在背面按下,它必须移动C-〉B-〉A。我的问题是如何删除A,用户输入D活动时的B、C活动。

0ve6wy6x

0ve6wy6x1#

使用FLAG_ACTIVITY_CLEAR_TOP这将解决您的问题
Android documentation
如果已设置,并且正在启动的Activity已在当前任务中运行,则不会启动该Activity的新示例,而是关闭其上的所有其他Activity,并且此Intent将作为新Intent交付给(现在位于顶部的)旧Activity。
例如,考虑由以下活动组成的任务:A、B、C、D。如果D使用解析为Activity B的组件的Intent调用startActivity(),则C和D将完成,并且B接收给定的Intent,从而导致堆栈现在为:A,B。
像这样使用它

Intent intent = new Intent(getApplicationContext(),
        yourActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

startActivity(intent);

再看看这个问题
Activity with Flag FLAG_ACTIVITY_CLEAR_TOP (android)
编辑:我以为你想从D移动到你的主活动,并想从堆栈中删除所有活动
你的堆栈就像家庭活动,A,B,C,D,所以我给你这个解决方案,因为这将删除所有的活动在堆栈上的顶部您的家庭活动。
如果要在转到D时清除堆栈,可以使用FLAG_ACTIVITY_TASK_ON_HOMEFLAG_ACTIVITY_CLEAR_TASK
但这两个都是针对api级别11。

7vux5j2d

7vux5j2d2#

正确的答案对我来说也很有趣,但我可以提供一个解决方案:例如,从O开始活动A:O-〉A-〉B-〉C-〉D。在活动O上,您可以放入Android清单android:launchMode="singleTop"。然后,当数据正常时,您可以使用标志“FLAG_ACTIVITY_CLEAR_TOP”启动活动O-它将从堆栈A、B、C中删除,并将在O中调用方法onNewIntent (Intent intent) http://developer.android.com/reference/android/app/Activity.html#onNewIntent(android.content.Intent),您可以在其中启动活动D。

irtuqstp

irtuqstp3#

您可以使用startActivityForResult启动活动,并从例如活动D调用setResult,在C活动中,您可以侦听活动结果,以及与此结果相关的是否完成活动,或从C活动调用setResalt ...

svgewumm

svgewumm4#

当你想把D活动移到那里时,你需要检查你的条件,如果你的条件得到满足,那么你需要进入你的下一个活动(即D)。在这种情况下,你需要使用下面的代码。

Intent intent = new Intent(this,D.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);

假设In在backpress上需要使用finish().来向后移动,即C -〉B -〉A。

mzillmmw

mzillmmw5#

请尝试对这段代码进行一些修改:

Intent intent = new Intent(this, D.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); // To clean up all activities
startActivity(intent);
1tuwyuhd

1tuwyuhd6#

尝试查找活动的公共方法startActivity(Intent i)和finish()here
在用法上,它应该如下所示。

Intent i = new Intent(MainActivity.this, MainActivity.class);
startActivity(i);
finish();

希望这对你有帮助:D

相关问题