如何通过实现1功能禁用设备中的后退按钮

时间:2015-11-12 15:32:55

标签: android

我正在尝试使用以下代码禁用设备中的后退按钮。 代码工作但我希望处理片段中所有后退按钮请求的函数将从主要活动派生

这是后退按钮处理程序:

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    getView().setFocusableInTouchMode(true);
    getView().requestFocus();

    getView().setOnKeyListener(new View.OnKeyListener() {
        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            if (event.getAction() == KeyEvent.ACTION_DOWN) {
                if (keyCode == KeyEvent.KEYCODE_BACK) {
                    Toast.makeText(getActivity(), "Please navigate via the menu", Toast.LENGTH_SHORT).show();
                    return true;
                }
            }
            return false;
        }
    });
}

4 个答案:

答案 0 :(得分:3)

更轻松地覆盖onBackPressed功能:

private boolean disabled = true;

@Override
public void onBackPressed() {
    if (!disabled) {
        super.onBackPressed();
    }
}

通过这种方式,您可以轻松更改disable标记,并在需要时启用后退按钮。

答案 1 :(得分:2)

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    // TODO Auto-generated method stub

  if (keyCode == KeyEvent.KEYCODE_BACK) {
     //leave it empty
     }
    return super.onKeyDown(keyCode, event);

}

答案 2 :(得分:0)

禁用后退按钮通常不是最佳选择,因为用户希望该按钮执行某种后退导航。既然如此,如果您有特定的原因,可以通过覆盖活动级别的onBackPressed而不是调用super来禁用后退按钮。

答案 3 :(得分:0)

将此代码放在MainActivity上:

@Override
public void onBackPressed() {
    executeAtAndroidOnBackPressed();
}

@Override
public boolean onKeyDown(final int keyCode, final KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        executeAtAndroidOnBackPressed();
    }
    return false;
}

protected void executeAtAndroidOnBackPressed() {
    // do nothing
}