Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.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 在菜单打开时覆盖BackButton_Java_Android_Back Button - Fatal编程技术网

Java 在菜单打开时覆盖BackButton

Java 在菜单打开时覆盖BackButton,java,android,back-button,Java,Android,Back Button,我试图实现的是,当用户在菜单可见时单击后退按钮,菜单实际和菜单的状态从可见变为不可见。如果菜单未打开且用户单击后退,则会显示一个土司,上面写着“再次按下退出”,如果在2秒内单击后退,应用程序将关闭 我拥有的代码: @Override public void finish() { if (MENU.getVisibility() == View.VISIBLE){ MENU.setVisibility(View.INVISIBLE); menuAc

我试图实现的是,当用户在
菜单
可见时单击后退按钮,
菜单实际
菜单
的状态从可见变为不可见。如果
菜单
未打开且用户单击后退,则会显示一个
土司
,上面写着
“再次按下退出”
,如果在2秒内单击后退,应用程序将关闭

我拥有的代码:

@Override
    public void finish() {

    if (MENU.getVisibility() == View.VISIBLE){
        MENU.setVisibility(View.INVISIBLE);
        menuActual.setVisibility(View.INVISIBLE);

    }else {
        if (doubleBackToExitPressedOnce) {
            super.onBackPressed();
            moveTaskToBack(true);

            return;
        }else {

            this.doubleBackToExitPressedOnce = true;
            Toast.makeText(this, "Tap again to Exit!", Toast.LENGTH_SHORT).show();

            new Handler().postDelayed(new Runnable() {

                @Override
                public void run() {
                    doubleBackToExitPressedOnce=false;
                }
            }, 2000);
        }
    }
}`
我已声明
布尔doubleBackToExitPressedOnce=false

应用程序甚至会显示
土司
并说
“再次按下退出”
,但如果再次单击“上一步”,应用程序会说
“AppName没有响应”

苦苦思索这是为什么,这是漫长的一天


谢谢

on backpressed中执行此操作,如下所示:

private boolean doubleBackToExitPressedOnce = false;
private Handler handler;
private Runnable runnable;

@Override
public void onBackPressed() {
    if (MENU.getVisibility() == View.VISIBLE) {
        MENU.setVisibility(View.INVISIBLE);
        menuActual.setVisibility(View.INVISIBLE);
        return;
    }

    if (!doubleBackToExitPressedOnce) {
        doubleBackToExitPressedOnce = true;
        Toast.makeText(this, "Tap again to Exit!", Toast.LENGTH_SHORT).show();

        handler = new Handler();
        handler.postDelayed(runnable = new Runnable() {

            @Override
            public void run() {
                doubleBackToExitPressedOnce = false;
            }
        }, 2000);
        return;
    }

    // Removes the callBack
    handler.removeCallbacks(runnable);

    // Replace this next line with finishAffinity() if you want to close the app.
    super.onBackPressed();
}