我的应用程序中的所有 Activity 都有注销按钮,用户可以从任何 Activity 中注销。我想将用户发送到登录 Activity 而不显示以前的 Activity 。为此,我正在使用:
以下是注销方法删除session
public void logoutUser() {
//clearing all data from sharedPreferences
editor.clear();
editor.commit();
Intent intnt = new Intent(contxt, LoginActivity.class);
// Closing all the Activities
intnt.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
// Add new Flag to start new Activity
intnt.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK );
// Staring Login Activity
contxt.startActivity(intnt);
}
当用户单击注销按钮然后调用注销方法时,来自第二个 Activity 。我的第二个 Activity 类扩展了 SherlockFragmentActivity。
public void Logout(MenuItem v) {
sessionMngr.logoutUser();
}
当我按下注销按钮时,我进入了登录屏幕,但是当我按下设备上的后退按钮时,它显示了之前的 Activity ——当我在登录屏幕上按下后退按钮时,我应该进入 Android 主屏幕。
我在 stackoverflow 上看到了一些问题,但没有实现我的目标。有人说我在 list 文件中使用 android:noHistory="true"但是当我在第三个 Activity 中并按下它显示 android 主屏幕的按钮时会发生什么,但它应该转到第二个 Activity 。我也尝试了 FLAG_ACTIVITY_NO_HISTORY 但这也没有实现我的目标。
我不明白我哪里错了。请问有没有人有解决办法。
提前致谢
最佳答案
尝试指定这两个:
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
同样为了安全起见,在开始此 Activity 后调用 finish()。
关于Android:注销时清除所有 Activity 的完美方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16412646/