How to prevent going back to the previous activity?
当在电话上按下BACK按钮时,我想阻止特定活动返回到之前的活动。
具体来说,我有登录和注册屏幕,当成功登录/注册时,都会启动一个名为
我尝试使用
我想在按下按钮时覆盖
1 2 3 4 | @Override public void onBackPressed() { finish(); } |
但这也行不通。
我的建议是完成您不希望用户返回的活动。例如,在您的登录活动中,在您致电
以下解决方案在通常的登录/主要活动场景或实现阻止屏幕时非常有用。
要最小化应用程序而不是返回到先前的活动,您可以覆盖
1 2 3 4 | @Override public void onBackPressed() { moveTaskToBack(true); } |
参数
我不确定你想要什么,但听起来应该是可能的,而且听起来你已经走在了正确的轨道上。
以下是一些可能有用的链接:
在android中禁用后退按钮
1 2 3 4 5 6 | MyActivity.java => @Override public void onBackPressed() { return; } |
如何禁用"返回"某些活动?
1 | AndroidManifest.xml => |
您的案例有两种解决方案,活动A启动活动B,但您不想回到活动B中的活动A.
1.从后栈中删除了之前的活动A.
1 2 3 | Intent intent = new Intent(activityA.this, activityB.class); startActivity(intent); finish(); // Destroy activity A and not exist in Back stack |
2.禁用在活动B中返回按钮操作。
有两种方法可以防止返回事件,如下所示,
1)推荐方法
1 2 3 | @Override public void onBackPressed() { } |
2)覆盖onKeyDown方法
1 2 3 4 5 6 7 | @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode==KeyEvent.KEYCODE_BACK) { return false; } return super.onKeyDown(keyCode, event); } |
希望它有用,但仍取决于你的情况。
你尝试过
之后放
1 2 3 | Intent i = new Intent(Summary1.this,MainActivity.class); startActivity(i); finish(); |
既然已经提出了很多很好的解决方案,那么就试着给出一个更具描述性的解释。
How to skip going back to the previous activity?
从Backstack中删除以前的Activity。简单
How to remove the previous Activity from Backstack?
调用
正常流量:
所有活动都存储在称为Backstack的堆栈中。
当您启动一个新的Activity(
需要注意的一个关键点是,当按下后退按钮时,会在内部调用
那么如果你想跳过活动B?
ie A<--- C
只需在活动B中的
1 2 3 | Intent i = new Intent(this, C.class); startActivity(i); finish(); |
这种方法工作正常
1 2 3 4 | Intent intent = new Intent(Profile.this, MainActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); |
如果您不想返回应用程序上的所有活动,则可以使用
1 | android:launchMode="singleTask" |
点击此处了解详情:http://developer.android.com/guide/topics/manifest/activity-element.html
paulsm4的答案是正确的。如果在
只需覆盖onKeyDown方法并检查是否按下了后退按钮。
1 2 3 4 5 6 7 8 9 10 | @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { //Back buttons was pressed, do whatever logic you want } return false; } |
1 2 3 | @Override public void onBackPressed() { } |
当您创建
放
1 | finish(); |
之后立马
ActivityStart
阻止活动阻止任何方式回到它。
然后加
1 2 3 4 | onCreate(){ getActionBar().setDisplayHomeAsUpEnabled(false); ... } |
对于您正在开始的活动。