从堆栈中删除活动

时间:2012-03-05 21:07:15

标签: android android-activity

我正在开发一个Android应用程序。我是android新手。 在我的应用程序中,我有一个类别选择活动,该用户必须检查一个复选框,基于他将在另一个屏幕上查看。我在第3个屏幕中有一个菜单按钮,我有一个用于选择类别的按钮,当我点击该按钮时它也可以正常工作但是当我点击后退按钮时它会在相同的活动中重定向我2次...如何删除这个问题?我已经使用了finish()方法,但它也会产生问题,直接从应用程序中解脱出来... 我想重定向到选择活动,当我点击后退按钮时,它不应该显示2次....

有没有办法请重定向我谢谢。

4 个答案:

答案 0 :(得分:4)

finish()的调用应该有效,所以你应该检查你的代码多次调用错误的方法或类似的东西。

Intent intent = new Intent(activity, activityClass.class);
activity.startActivity(intent);
finish();

你还应该看一下Intent标志:

intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);

答案 1 :(得分:1)

您的问题不够明确,我不知道这是否可以解决您的问题,但如果您在Activity的{​​{1}}中包含以下属性,那么归因于{{1}将永远不会出现在您的历史记录列表中。

AndroidManifest.xml

至于从历史中删除某些东西,我不知道该怎么做,但我对答案感兴趣!

答案 2 :(得分:1)

您应该在致电Intent之前致电完成并转到下一个活动。所以当前任务完成后不会保存在堆栈中,然后你的意图活动就会出现在堆栈之上。如果您想直接进入选择活动,请覆盖onBackPressed()并将意图转移到您想要去的活动。

答案 3 :(得分:0)

您可以使用不同的标志来控制活动与活动历史记录堆栈的交互方式。您可能感兴趣的两个是FLAG_ACTIVITY_CLEAR_TOPFLAG_ACTIVITY_NO_HISTORY