Cleartop不适用于具有noHistory = true的Activity

时间:2014-01-21 06:48:02

标签: android android-intent android-activity

您好我有一个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按下后关闭应用程序。

3 个答案:

答案 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();
                }
            });