繁体   English   中英

如何禁用Android中的先前活动

[英]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);
}

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

覆盖后退按钮,就像主页按钮一样

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

在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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM