在安卓系统中禁用返回按钮

5

我想在Android中屏蔽硬件返回按钮,以防止回到其他活动页面。

提前致谢...


没有理由投票完成,因为问题是合法的:您可以防止对话框的返回按钮,因此至少在使用对话框样式的活动时,阻止返回按钮可能是有意义的。 - sven
2个回答

17
以下是代码,可以让您在平台的所有版本上正确处理活动中的返回键:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)  {
    if (  Integer.valueOf(android.os.Build.VERSION.SDK) < 7 //Instead use android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.ECLAIR
            && keyCode == KeyEvent.KEYCODE_BACK
            && event.getRepeatCount() == 0) {
        // Take care of calling this method on earlier versions of
        // the platform where it doesn't exist.
        onBackPressed();
    }

    return super.onKeyDown(keyCode, event);
}

@Override
public void onBackPressed() {
    // This will be called either automatically for you on 2.0
    // or later, or by the code above on earlier versions of the
    // platform.
    return;
}

sources:http://android-developers.blogspot.com/2009/12/back-and-other-hard-keys-three-stories.html


特别是由于Android的笨拙的Fragment回退栈不允许您清除最旧的项目而保留最新的项目,这是非常重要的知识。 - Peter Ajtai
@100rabh,我使用了您上面的代码,在我的GameView中完美地运行。但是,在View中,我有对话框弹出。我该如何实现禁用后退按钮以关闭弹出窗口?谢谢。 - SingleWave Games
@LandLPartners 对话框中,你需要使用DialogInterface.OnKeyListener来处理按键。只需像上面一样捕获返回键,你就做完了! - 100rabh
@100rabh,我已经使用“public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent evt)”实现了这个功能,然后返回“super.onKeyDown(keyCode, evt)”。但是,这似乎不起作用,我猜测返回代码行不正确? - SingleWave Games
@LandLPartners 请尝试这个如何在对话框中处理返回按钮? - 100rabh

4
如果“其他活动”是你的,你可以设置它不出现在历史记录列表中。否则,请记住手机属于用户而不是你,停止试图告诉他们在他们的设备上可以做什么和不能做什么。

2
我认为在某些情况下这是可以接受的。我遇到了一个这样的情况,当用户返回时,我有一组偏好设置会自动保存,但是如果他们忘记填写某个字段,我会提醒他们确认是否要返回并丢失更改... - Redth

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接