我有两个activity
。一个活动包含多个片段fragment
我打开另一个活动(第二个活动)。在我的第二个活动中它包含文件夹名称列表。当我单击文件夹列表项时,则相同的活动打开子文件夹列表。并再次单击子文件夹列表,它导航到与其子文件夹列表相同的活动。现在,当我选择文件夹的列表文件时,我想完成我点击后打开的所有第二个activity
。
我也尝试使用Intent.FLAG_ACTIVITY_CLEAR_TOP
但它会finish
所有活动而非第二活动。
先谢谢。
答案 0 :(得分:1)
android:launchMode="singleTask" //use this for your activity in manifest and
这里有一些来自android文档的重要内容
singleTask
和singleInstance
模式在一个方面也各不相同: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_TASK
和Intent.FLAG_ACTIVITY_CLEAR_TASK
以及intent
所有之前的后台堆栈Activities
将finish
。
答案 4 :(得分:0)
使用此
if (isTaskRoot()==false ) {
finish();
return;
}