Intent.FLAG_ACTIVITY_CLEAR_TOP无效

时间:2014-04-14 13:58:51

标签: android back-stack

我的申请流程:

登录 - >简介 - > UpdateProfile-> ChangePass

我的所有活动都扩展了FragmentActivity

当我在ChangePass活动中按下按钮时,我会调用此代码:

Intent intent=new Intent(getApplicationContext(),LoginActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);

所以它应该启动LoginActivity,当我从LoginActivity按回来时,应该关闭...但是当我按下Login Activity中的后退按钮时,流程是:

ChangePass-> UpdateProfile->简介 - >登录

为什么我的后台堆栈没有清除?

注意:

我已经应用了所有这些解决方案但没有工作: 1.link 2.link

4 个答案:

答案 0 :(得分:2)

尝试以下方式 -

 Intent intent = new Intent(getActivity(), LoginActivity.class);
 intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
 intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
 startActivity(intent);
 finish();

有关更多替代方案和详细信息,请查看intent-flag-activity-clear-top-doesn't-deletes-the-activity-stack。该帖子完美地解释了结果代码和上述解决方案。

答案 1 :(得分:2)

虽然回复很晚 但是可能会帮助别人,因为它对我有用。

开发人员有时会将FLAG_ACTIVITY_CLEAR_TASKFLAG_ACTIVITY_CLEAR_TOP

混淆

使用此
intentRestart.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);

答案 2 :(得分:0)

不要替换旧标志,而是尝试附加一个。 Setflag替换了theold标志。

尝试使用addFlags。

答案 3 :(得分:0)

清除任务并创建新任务。

 intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK)

这可能会在过渡时创建一个临时白屏。消除此缺陷。 将此添加到您的应用主题。

<item name="android:windowDisablePreview">true</item>

享受Android!