Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 注销时,清除活动历史堆栈,防止“;背面”;打开上次活动的按钮_Android_Android Intent - Fatal编程技术网

Android 注销时,清除活动历史堆栈,防止“;背面”;打开上次活动的按钮

Android 注销时,清除活动历史堆栈,防止“;背面”;打开上次活动的按钮,android,android-intent,Android,Android Intent,我正在制作一个需要注销的android应用程序。我已经实现了注销功能,但问题是当我单击后退按钮时。上一个活动开始 我尝试通过将其意图标志设置为FLAG_activity_CLEAR_TOP来打开登录活动,这似乎与文档中概述的一样,但没有实现将登录活动置于历史堆栈底部的目标,也没有阻止用户导航回以前看到的登录活动。我还尝试在清单中使用android:launchMode=“singleTop”进行登录活动,但这也没有达到我的目标(而且似乎没有任何效果) 我正在使用以下代码: private OnC

我正在制作一个需要注销的android应用程序。我已经实现了注销功能,但问题是当我单击后退按钮时。上一个活动开始

我尝试通过将其意图标志设置为FLAG_activity_CLEAR_TOP来打开登录活动,这似乎与文档中概述的一样,但没有实现将登录活动置于历史堆栈底部的目标,也没有阻止用户导航回以前看到的登录活动。我还尝试在清单中使用android:launchMode=“singleTop”进行登录活动,但这也没有达到我的目标(而且似乎没有任何效果)

我正在使用以下代码:

private OnClickListener clickLogoutListener = new OnClickListener() {
            public void onClick(View v)
            {   
                 AlertDialog.Builder builder = new   AlertDialog.Builder(HomePage.this);
                    AlertDialog alertDialog = builder.create();


            alertDialog.setMessage("Do you want to logout??");
            alertDialog.setButton(DialogInterface.BUTTON_POSITIVE, "Yes",
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog,
                                int whichButton) {
                            Intent intent1 = new Intent(getApplicationContext(), Login.class);
                            //intent1.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP|Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
                            intent1.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP);
                            startActivity(intent1);
                            finish();
                        }

                    });

            alertDialog.setButton(DialogInterface.BUTTON_NEGATIVE, "No",
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog,
                                int whichButton) {
                        }
                    });
            alertDialog.show();


            }
        };

您可以使用Intent.FLAG\u ACTIVITY\u NO\u HISTORY

或者在清单中定义活动

android:noHistory=true

我也面临着同样的问题。我用这些解决了我的问题


但是,我不知道你的应用程序流程。所以我不能确定这对你是否有用。但是你可以试试。

当你按下后退按钮时,会发生一个事件。所以您要做的是通过onKeyDown()方法处理该事件,如下所示-->

公共布尔onKeyDown(int键、KeyEvent事件){

开关(event.getAction()){ case KeyEvent.KEYCODE\u返回: 在此处执行某些操作或显示一些消息 打破 } 返回true; }试试:

Intent intent = new Intent(this, LoginActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS | Intent.FLAG_ACTIVITY_CLEAR_TOP);

我回答了同样的问题,我应该在所有活动中定义这个吗?是的,当然。当你每次调用intent时,如果你不想在完成后返回到新屏幕,那么就传递标志。或者你从声明时起就确定,然后在清单中执行