Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Android中禁用以前的活动_Java_Android_Android Activity_Android Intent - Fatal编程技术网

Java 如何在Android中禁用以前的活动

Java 如何在Android中禁用以前的活动,java,android,android-activity,android-intent,Java,Android,Android Activity,Android Intent,对不起,我的英语不好 我有两项活动。称为Act1和Act2 当点击Act1中的按钮时,Act2将启动(startActivity)。我的问题是如何禁用Act2中的“后退”按钮,以便无法返回Act1 有可能吗。多谢各位 如何克服这个问题: 覆盖onKeyDown方法,结束集完成() 以前有人问过这个问题,所以你会在这里找到很多好的答案: 只需覆盖back键并调用finish()。这样它就不会返回到第一个活动,只会关闭。有几个答案。你可以在这里找到一些: 您还可以覆盖backbutton以完全执行

对不起,我的英语不好

我有两项活动。称为Act1和Act2

当点击Act1中的按钮时,Act2将启动(startActivity)。我的问题是如何禁用Act2中的“后退”按钮,以便无法返回Act1

有可能吗。多谢各位

如何克服这个问题:

覆盖onKeyDown方法,结束集完成()


以前有人问过这个问题,所以你会在这里找到很多好的答案:


只需覆盖back键并调用
finish()
。这样它就不会返回到第一个活动,只会关闭。

有几个答案。你可以在这里找到一些:

您还可以覆盖backbutton以完全执行所需操作。

在startActivity(i)之后;调用finish()关闭上一个活动。
或者使用

基本上你需要这个

这将清除当前活动堆栈,即

如果您有活动A,并且它使用此标志启动活动B,则按“后退”按钮不会将您返回到活动B,因为堆栈现在只有B


此方法比重写“后退”按钮更简洁,所需代码更少。

因为听起来您希望这样做,以便“后退”按钮不会返回到活动1,但您可能仍然需要在Acity2中使用一个功能性的后退按钮(可能是为了处理潜在的活动3或处理片段的后退),最简单的方法是保持后退按钮功能不变,只需从后退中删除活动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 
公共布尔onKeyDown(int-keyCode,KeyEvent事件){ 如果((keyCode==KeyEvent.keyCode_BACK)){


}在Activy 2中使用此代码

public boolean onKeyDown(int keyCode, KeyEvent event) {

             switch(keyCode){
             case KeyEvent.KEYCODE_BACK:

             break;
             }
             return false;
             }

我认为最好设置android:noHistory=“true”或者使用Intent.FLAG\u ACTIVITY\u NO_HISTORY@Dante取决于您需要做什么,但我想这是一种方法:)@user1052070查看堆栈溢出的历史记录,我发现您过去没有接受任何答案。请继续并将正确的答案标记为已接受。这也将在将来帮助您。这将导致e如果存在Activity3,则返回按钮应从Activity2转到Activity3(因为用户已浏览Act1、Act2、Act3、Act2),或者如果在Activity2中使用了一些片段并添加到Backback中,则back按钮应该恢复。----当然,您可以向back按钮覆盖添加逻辑来处理所有这些,但随后事情开始变得混乱。他非常清楚地表示他有两个活动,所以我真的看不出问题。仅
finish()
就足够了。
} 
return super.onKeyDown(keyCode, event); 
public boolean onKeyDown(int keyCode, KeyEvent event) {

             switch(keyCode){
             case KeyEvent.KEYCODE_BACK:

             break;
             }
             return false;
             }