当按下手机上的后退键时,我想阻止一个特定的活动返回到它的前一个活动。

具体来说,我有登录和注册屏幕,当成功登录/注册发生时,都会启动一个名为HomeScreen的新活动。一旦启动了HomeScreen,我想阻止用户通过按BACK键返回登录或注册屏幕。

我尝试使用Intent。FLAG_ACTIVITY_NO_HISTORY,但由于应用程序有Facebook集成,当“登录与Facebook”使用时,Facebook应该返回到初始登录屏幕,因此我应该保留这些活动的历史。

我想过在主屏幕上重写BACK按钮的行为,当我按下该按钮时直接完成应用程序

@Override
public void onBackPressed() {
    finish();
}

但这也行不通。


当前回答

Put

finish();

后立即 ActivityStart 停止该活动,从而阻止返回该活动的任何方式。 然后添加

onCreate(){
    getActionBar().setDisplayHomeAsUpEnabled(false);
    ...
}

你要开始的活动。

其他回答

把finish()放在后面

Intent i = new Intent(Summary1.this,MainActivity.class);
            startActivity(i);
finish();

AndroidManifest.xml

 <activity 
      android:name=".welcome.SplashActivity"
      android:noHistory="true" // just add this line
      android:exported="true">  

 </activity>

我不知道你到底想要什么,但听起来应该是可能的,而且听起来你已经在正确的轨道上了。

下面是一些可能会有帮助的链接:

禁用android中的后退按钮

  MyActivity.java =>
    @Override
    public void onBackPressed() {

       return;
    }

我如何禁用“返回”到一些活动?

  AndroidManifest.xml =>
<activity android:name=".SplashActivity" android:noHistory="true"/>
@Override
public void onBackPressed() {
}

当你创建onBackPressed()时,只需删除super.onBackPressed();这应该可以工作

这种方法工作得很好

Intent intent = new Intent(Profile.this, MainActivity.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(intent);