当按下手机上的后退键时,我想阻止一个特定的活动返回到它的前一个活动。
具体来说,我有登录和注册屏幕,当成功登录/注册发生时,都会启动一个名为HomeScreen的新活动。一旦启动了HomeScreen,我想阻止用户通过按BACK键返回登录或注册屏幕。
我尝试使用Intent。FLAG_ACTIVITY_NO_HISTORY,但由于应用程序有Facebook集成,当“登录与Facebook”使用时,Facebook应该返回到初始登录屏幕,因此我应该保留这些活动的历史。
我想过在主屏幕上重写BACK按钮的行为,当我按下该按钮时直接完成应用程序
@Override
public void onBackPressed() {
finish();
}
但这也行不通。
对于您的情况有两种解决方案,活动A启动活动B,但您不希望在活动B中返回活动A。
1. 从后堆栈中移除先前的活动A。
Intent intent = new Intent(activityA.this, activityB.class);
startActivity(intent);
finish(); // Destroy activity A and not exist in Back stack
2. 在活动B中禁用返回按钮动作。
有两种方法可以防止go back事件,如下所示:
1)推荐方法
@Override
public void onBackPressed() {
}
2)覆盖onKeyDown方法
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode==KeyEvent.KEYCODE_BACK) {
return false;
}
return super.onKeyDown(keyCode, event);
}
希望对你有用,但还是要看你的情况。