我正在制作一个我需要注销的Android应用程序 . 我已经实现了注销功能,但问题是当我点击后退按钮时 . 之前的活动开始了 .
我已经尝试通过将其Intent标志设置为FLAG_ACTIVITY_CLEAR_TOP来打开Login活动,这似乎是在文档中概述的,但是没有实现我将Login活动放在历史堆栈底部并且阻止用户导航回以前看到的登录活动 . 我也尝试使用android:launchMode =“singleTop”作为清单中的Login活动,但这也没有实现我的目标(并且似乎无论如何都没有效果) .
我正在使用follpowing代码:
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();
}
};
3 回答
当您按下后退按钮时,会发生事件 . 所以你要做的是通过像这样的onKeyDown()方法处理那个事件--->
public boolean onKeyDown(int key,KeyEvent event){
switch(event.getAction()){case KeyEvent.KEYCODE_BACK:在这里做一些事情或显示一些消息中断; } return true; }
试试:
...
你可以用 Intent.FLAG_ACTIVITY_NO_HISTORY
或定义Manifest中的活动
android:noHistory = true
我遇到了同样的问题..我使用了这些,这解决了我的目的
但是,我不知道你的App流程 . 所以不能确定这对你有用..但你可以尝试一下 .