如何关闭相同的活动.多次开放



我有两个activities,一个活动包含多个片段,fragment我打开另一个活动(第二个活动(。我的第二个活动包含一个文件夹名称列表。当我单击文件夹列表项时,将使用子文件夹列表打开相同的活动。,然后再次单击子文件夹列表,它将导航到与其子文件夹列表相同的活动。现在,当我选择文件夹的列表文件时,我想完成单击时打开的所有第二个activity

我也尝试使用Intent.FLAG_ACTIVITY_CLEAR_TOP但它将finish所有活动,而不是唯一的第二个活动。

提前谢谢。

无需

多次打开相同的活动,您可以使用

android:launchMode="singleInstance"

在清单中像这样:

<activity android:name=".SavedFormActivity"
        android:launchMode="singleInstance"/>
android:launchMode="singleTask" //use this for your activity in manifest and 

以下是安卓文档中的一些重要行

singleTasksingleInstance模式仅在一个方面彼此不同:singleTask活动允许其他活动成为其任务的一部分。它始终是其任务的根源,但其他活动(必然是"标准"和singleTop活动(可以启动到该任务中。另一方面,singleInstance活动不允许其他活动成为其任务的一部分。这是任务中唯一的活动。如果它启动另一个活动,则该活动将分配给不同的任务 — 就好像FLAG_ACTIVITY_NEW_TASK在意图中一样。

将其添加到活动中的清单文件中

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

只需在每个意向后调用finish()

编辑:

如果您想要后退功能,请在要删除所有后退堆栈时尝试这样做,Activities像这样添加具有该意图的flags

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

在您的情况下,当您选择文件夹的列表文件时,只需添加标志Intent.FLAG_ACTIVITY_NEW_TASKIntent.FLAG_ACTIVITY_CLEAR_TASK intent所有以前的后退堆栈Activities finish

使用这个

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

最新更新