您好我有一个LoginActivity,定义为noHistory = true。当用户被正确授权后,他将转向我的应用程序的MainActivity。当用户从主活动中选择注销时,我使用FLAG_ACTIVTY_CLEAR_TOP启动对Loginactivity的意图。但是当我从LoginActivity按回来时,它会将我带回MainActivity。
查看我的代码
logoutBotton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
showLogoutDialog();
}
});
private void showLogoutDialog(){
AlertDialog.Builder dialog = new AlertDialog.Builder(this);
dialog.setTitle("Logout");
dialog.setMessage("Do you really want to logout?");
dialog.setPositiveButton("Logout", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
Intent intent = new Intent(MainActivity.this,LoginActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
}
});
dialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
dialog.show();
}
对于您的类型参考,LoginActivity的noHistory = true。帮助我在我的代码中出错。我想在从LoginActivity按下后关闭应用程序。
答案 0 :(得分:1)
按照以下步骤: - 它对我有用
1)在android:clearTaskOnLaunch="true"
中为您的登录活动制作AndroidManifest.xml
。
2)用于完成活动
intent = new Intent(activity, LoginActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET
| Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
这对我有用
答案 1 :(得分:1)
您可以使用某种全局变量来跟踪用户是否已登录。像这样的东西,
public boolean loggedIn = false;
然后在mainActivity中,如果您已退出,请覆盖onResume()
和finish()
:
@Override
public void onResume() {
super.onResume();
if (!loggedIn)
finish();
}
答案 2 :(得分:0)
为什么要保持旗帜?您可以在用户点击Logout ...
时完成活动 dialog.setPositiveButton("Logout",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
Intent intent = new Intent(MainActivity.this,
LoginActivity.class);
startActivity(intent);
finish();
}
});