[英]How to disable previous activity in Android
对不起,我的英语不好。
我有两项活动。 称为Act1和Act2
单击Act1中的Button(startActivity)时将启动Act2。 我的问题是如何在Act2中禁用后退按钮,所以,我无法返回到Act1。
可能吗。 谢谢。
如何克服这个问题:
覆盖onKeyDown方法,结束Set finished();
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK)) {
finish();
}
return super.onKeyDown(keyCode, event);
}
在startActivity(i)之后; call finish()关闭之前的活动。 或使用Intent.FLAG_ACTIVITY_NO_HISTORY
有几个答案。 您可以在此处找到一些: 从历史堆栈中删除活动
您还可以覆盖后退按钮以完全按照您的意愿执行操作。
基本上你需要这个,
Intent.FLAG_ACTIVITY_CLEAR_TASK
这会清除您当前的活动堆栈,即
如果您有活动A并且它使用此标志启动活动B,则按后退按钮将不会返回活动B,因为您的堆栈现在只有B.
与覆盖后退按钮相比,此方法更简洁,所需代码更少。
因为听起来你想要这样做,所以后退按钮不会回到活动1,但你可能仍需要在Acitity 2中使用功能后退按钮(可能需要处理潜在的Activity 3或处理片段Backstack)最简单的方法是按原样保留后退按钮功能,只需从后台堆栈中擦除活动1即可。 通过在切换到活动2时调用活动1上的finish()
来执行此操作:
// This is in Activity 1. It is how we switch to Activity 2:
Intent intent = new Intent(this, Activity2.class);
startActivity(intent);
finish();
// And now Activity 1 cannot be navigated back to with the back button
// but the back button functionality remains intact.
如果你把它留在下面,我认为它不会崩溃
@Override
public boolean onKeyDown(int keyCode,KeyEvent event){if((keyCode == KeyEvent.KEYCODE_BACK)){
}
return super.onKeyDown(keyCode, event);
}
在活动中使用此代码2 ...
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch(keyCode){
case KeyEvent.KEYCODE_BACK:
break;
}
return false;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.