【发布时间】:2012-10-08 12:19:39
【问题描述】:
当我点击 Profile 活动中的 Logout 按钮时,我想将用户带到 Login 页面,他需要使用新的凭据。
因此我使用了这个代码:
Intent intent = new Intent(ProfileActivity.this,
LoginActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
在注销按钮的onButtonClick 中。
但问题是当我单击登录活动上的设备后退按钮时,它会将我带到 ProfileActivity。当我按下 LoginActivity 上的设备后退按钮时,我期待应用程序应该关闭。
我做错了什么?
我还在清单中为我的 LoginActivity
添加了android:launchMode="singleTop"
谢谢
【问题讨论】:
-
@GauravVashisth 我只是在关注这个解决方案stackoverflow.com/questions/5794506/…
-
@abbas.aniefa 这个解决方案我有点复杂。这是清除所有后台堆栈的唯一方法。因为我有 30 多个活动,所以我应该为所有活动编写此广播代码
-
那就试试这个吧,stackoverflow.com/questions/10961481/…。使用广播是更好的解决方案。
-
另一种可用于注销的方法,一旦您注销将一个标志存储在 sharedpreferences 和活动的每个 onRestart() 方法中,您可以检查此变量值,如果它设置为 true,您可以完成当前活动。所以无论有多少活动在后台打开。这将完成您的所有活动。
-
您的原始代码通过调整实际上适用于 API 级别 11 或更高级别。您只需在一次调用中将标志放在一起:
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);我从这个问题中得到了答案:stackoverflow.com/questions/3473168/…
标签: android back-stack