【问题标题】:Cleartop not works for Activity with noHistory=trueCleartop 不适用于 noHistory=true 的 Activity
【发布时间】:2014-01-21 06:48:02
【问题描述】:

您好,我有一个定义为 noHistory=true 的 LoginActivity。当用户被正确授权时,他将转移到我的应用程序的 MainActivity。当用户从主要活动中选择注销时,我会使用 FLAG_ACTIVTY_CLEAR_TOP 启动登录活动的意图。但是,当我现在从 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 按下后关闭应用程序。

【问题讨论】:

  • 您说您正在使用 FLAG_ACTIVTY_CLEAR_TOP,但在代码中,我没有看到该标志...并且还要确保在开始另一个 Activity 之前关闭对话框...
  • 抱歉,这只是我的代码中的一个更改,我照原样复制了它。现在我将实际代码编辑为。
  • 启动LoginActivity后即可完成MainActivity...

标签: android android-intent android-activity


【解决方案1】:

您可以使用某种全局变量来跟踪用户是否已登录。像这样的,

public boolean loggedIn = false;

然后在 mainActivity 中,如果您已注销,则覆盖 onResume()finish()

@Override
public void onResume() {
  super.onResume();
  if (!loggedIn)
    finish();
}

【讨论】:

    【解决方案2】:

    请按照以下步骤操作:- 它对我有用

    1) 在AndroidManifest.xml 中为您的登录活动创建android:clearTaskOnLaunch="true"

    2) 用于完成活动

    intent = new Intent(activity, LoginActivity.class);
                intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET
                        | Intent.FLAG_ACTIVITY_NEW_TASK);
                startActivity(intent);
    

    它对我有用

    【讨论】:

    • 好吧,一步一步来,你真的 android:clearTaskOnLaunch..?
    【解决方案3】:

    为什么要维护标志?当用户点击 Logout 时,您可以简单地完成 Activity...

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-18
      • 1970-01-01
      相关资源
      最近更新 更多