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

时间:2017-03-16 12:49:48

标签: android android-fragments

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

我也尝试使用Intent.FLAG_ACTIVITY_CLEAR_TOP但它会finish所有活动而非第二活动。

先谢谢。

5 个答案:

答案 0 :(得分:1)

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

这里有一些来自android文档的重要内容

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

答案 1 :(得分:1)

无需多次打开相同的活动

android:launchMode="singleInstance"

在这样的清单中:

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

答案 2 :(得分:1)

在活动

中的清单文件中添加此内容
<activity android:name=".MainActivity"
android:launchMode="singleTask"/>

答案 3 :(得分:1)

只需在每次意图后调用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所有之前的后台堆栈Activitiesfinish

答案 4 :(得分:0)

使用此

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