android-fragments 如何关闭多次打开的同一活动?

fcy6dtqo  于 2022-11-13  发布在  Android
关注(0)|答案(5)|浏览(174)

我有两个activities。一个活动在fragment中包含多个片段。我打开另一个活动(第二个活动)。我的第二个活动包含一个文件夹名称列表。当我单击文件夹列表项时,同一活动将打开子文件夹列表。再次单击子文件夹列表时,它将导航到同一活动及其子文件夹列表。现在,当我选择文件夹“的列表文件,然后我想完成所有的第二个activity,我打开点击。
我也尝试使用Intent.FLAG_ACTIVITY_CLEAR_TOP,但它将finish所有活动,而不是唯一的第二个活动。
提前致谢。

o2g1uqev

o2g1uqev1#

您无需多次打开同一活动,可以使用

android:launchMode="singleInstance"

在清单中是这样的:

<activity android:name=".SavedFormActivity"
        android:launchMode="singleInstance"/>
tkqqtvp1

tkqqtvp12#

android:launchMode="singleTask" //use this for your activity in manifest and

以下是Android文档中的一些重要行
singleTasksingleInstance模式也仅在一个方面彼此不同:singleTask活动允许其他活动成为其任务的一部分。它始终位于其任务的根,但其他活动(必须是“standard”和singleTop活动)可以启动到该任务中。另一方面,singleInstance活动不允许其他活动成为其任务的一部分。它是任务中的唯一活动。如果它启动另一个活动,该Activity被分配给不同的任务-就好像FLAG_ACTIVITY_NEW_TASK在Intent中一样。

yi0zb3m4

yi0zb3m43#

将其添加到Activity中清单文件中

<activity android:name=".MainActivity"
android:launchMode="singleTask"/>
bttbmeg0

bttbmeg04#

只需在每个Intent后调用finish()

编辑:

如果您想要回退功能,请尝试这种方法,当您想要移除所有回退堆栈Activities时,请使用该Intent添加flags,如下所示

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);

在您的情况下,当您选择文件夹的列表文件,只需添加标志Intent.FLAG_ACTIVITY_NEW_TASKIntent.FLAG_ACTIVITY_CLEAR_TASKintent所有以前的回栈Activitiesfinish

vsikbqxv

vsikbqxv5#

用这个

if (isTaskRoot()==false ) {
        finish();
        return;
    }

相关问题