Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/215.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
Android 如何通过执行1功能禁用设备中的后退按钮_Android - Fatal编程技术网

Android 如何通过执行1功能禁用设备中的后退按钮

Android 如何通过执行1功能禁用设备中的后退按钮,android,Android,我正试图用以下代码禁用设备中的“后退”按钮。 代码正在工作,但我希望处理片段中所有后退按钮请求的函数将派生自主活动 这是后退按钮处理程序: @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); getView().setFocusableInTouchMode(true); getView().req

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

这是后退按钮处理程序:

@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;
        }
    });
}

禁用“后退”按钮通常不是最好的主意,因为用户希望该按钮执行某种后退导航。话虽如此,如果您有特定的原因,您可以通过在“活动”级别覆盖而不调用super来禁用“后退”按钮。

将此代码放在您的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
}

更容易在按下时覆盖
功能:

private boolean disabled = true;

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

使用此功能,您可以轻松更改
禁用
标志,并在需要时启用后退按钮。

正如我所知,您需要覆盖每个活动的onBackPressed()函数。我有一个包含所有片段的主活动,但如何从每个片段中的主活动使用此方法?我将编辑我的答案。您应该更新您的问题以添加此信息。根据该代码,我需要在每个片段中添加哪些代码?我尝试了您的代码,并在executeAtAndroidOnBackPressed()中添加了Toast.makeText行(此“back”,Toast.LENGTH\u LONG);但它没有显示任何内容,只是在不显示任何消息的情况下禁用按钮。您应该在片段中删除任何后台配置。
private boolean disabled = true;

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