Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Intent.FLAG\u ACTIVITY\u CLEAR\u TOP未关闭android中堆栈中的所有活动_Android - Fatal编程技术网

Intent.FLAG\u ACTIVITY\u CLEAR\u TOP未关闭android中堆栈中的所有活动

Intent.FLAG\u ACTIVITY\u CLEAR\u TOP未关闭android中堆栈中的所有活动,android,Android,我想在进入新活动之前关闭堆栈中的所有活动 这是我的密码 Intent i=new Intent(first.this,secondsct.class); i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); //i.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); //i.addFla

我想在进入新活动之前关闭堆栈中的所有活动

这是我的密码

Intent i=new Intent(first.this,secondsct.class);
                        i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                        //i.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
                        //i.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
                        //i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                        startActivity(i);
                        finish();

但这是行不通的。我以前试过,但现在不行。我不知道为什么。任何人都知道可能的原因。

您可以尝试将
标记活动\u清除\u顶部
标记活动\u新任务
结合使用

i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP)


我尝试了Intent.FLAG\u ACTIVITY\u CLEAR\u TOP,但没有得到正确的解决方案,所以最终这对我有帮助

Intent intent = new Intent(getApplicationContext(), LoginActivity.class);
ComponentName cn = intent.getComponent();
Intent mainIntent = IntentCompat.makeRestartActivityTask(cn);
startActivity(mainIntent);

这将清除所有堆栈并仅运行LoginActivity

在您想退出时使用此函数。希望这能解决你的问题

 public void exit()
    {
         Intent intent = new Intent(Intent.ACTION_MAIN);
         intent.addCategory(Intent.CATEGORY_HOME);
         intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
         startActivity(intent);
    }

我还尝试了所有可能的标志,并像您一样调用了
finish()
方法。但是我找到了一个更好的方法,通过使用
finishafinity()
方法来结束之前的所有活动


第三个答案中提出了这一解决方案。它解决了我的问题。希望它能解决您的问题。

在您的清单文件中,您是否定义了带有任何值的
android:launchMode
?否。我是否必须为所有活动设置它?堆栈中是否已经存在被调用活动(secondsct)的实例?如果您看到有关
CLEAR_TOP
的文档,其中说>“如果设置了,并且正在启动的活动已经在当前任务中运行,则不启动该活动的新实例,而是关闭其上的所有其他活动,并且此意图将作为新意图传递给(现在位于顶部的)旧活动。”不,堆栈中没有secondsct的实例。有一个问题是在类似的情况下提出的,请看这里仍然不清楚为什么它不起作用。我已经在2.1版中试用过了,效果不错。现在,在2.2中它不起作用时,你可以用你想开始的活动重新拼贴最后一行。。这将需要一点修改在我的情况下,这是唯一的解决方案,工作!谢谢