当按下手机上的后退键时,我想阻止一个特定的活动返回到它的前一个活动。
具体来说,我有登录和注册屏幕,当成功登录/注册发生时,都会启动一个名为HomeScreen的新活动。一旦启动了HomeScreen,我想阻止用户通过按BACK键返回登录或注册屏幕。
我尝试使用Intent。FLAG_ACTIVITY_NO_HISTORY,但由于应用程序有Facebook集成,当“登录与Facebook”使用时,Facebook应该返回到初始登录屏幕,因此我应该保留这些活动的历史。
我想过在主屏幕上重写BACK按钮的行为,当我按下该按钮时直接完成应用程序
@Override
public void onBackPressed() {
finish();
}
但这也行不通。
既然已经提出了许多很好的解决方案,我将试着给出一个更指导性的解释。
如何跳过回到前一个活动?
从Backstack中移除之前的Activity。简单的
如何从Backstack中删除之前的活动?
调用finish()方法
正常流量:
所有的活动都存储在一个称为Backstack的Stack中。
当你启动一个新的Activity(startActivity(…))时,新的Activity被推到堆栈的顶部,当你按下back按钮时,Activity从堆栈中弹出。
需要注意的一个关键点是,当按下返回按钮时,然后finish();方法在内部调用。这是onBackPressed()方法的默认行为。
如果你想跳过活动B?
A<——C
只需添加finish();在活动B中你的startActvity(…
Intent i = new Intent(this, C.class);
startActivity(i);
finish();