Android Webview后退按一下返回,双击退出

Android Webview后退按一下返回,双击退出,android,webview,Android,Webview,大家好,我正试图使网络视图上的后退按钮在按下一次时返回,并在按下两次时以警报结束活动 问题是,当我尝试双击时,它会像我单击了一个一样运行。。他不期望双击的运行时间 谢谢 代码 试着做这个,看看这对你是否有用 boolean doubleBackToExitPressedOnce; @Override public void onBackPressed() { Log.i(TAG, "onBackPressed"); if (doubleBackToExitPressedOnc

大家好,我正试图使网络视图上的后退按钮在按下一次时返回,并在按下两次时以警报结束活动

问题是,当我尝试双击时,它会像我单击了一个一样运行。。他不期望双击的运行时间

谢谢

代码


试着做这个,看看这对你是否有用

boolean doubleBackToExitPressedOnce;

@Override
public void onBackPressed() {
    Log.i(TAG, "onBackPressed");

    if (doubleBackToExitPressedOnce) {
        Log.i(TAG, "double click");
        new AlertDialog.Builder(this)
                .setIcon(R.drawable.ic_launcher)
                .setTitle("Esmalteria Cariúcha")
                .setMessage("Sair do Sistema?")
                .setPositiveButton("Sim",
                        new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog,
                                    int which) {
                                finish();
                            }

                        }).setNegativeButton("Não", null).show();
        return;
    } else {
        Log.i(TAG, "single click");
        if (webview.canGoBack()) {
            Log.i(TAG, "canGoBack");
            webview.goBack();
        } else {
            Log.i(TAG, "nothing to canGoBack");
        }
    }

    this.doubleBackToExitPressedOnce = true;
    if (getApplicationContext() == null) {
        return;
    } else {
        Toast.makeText(this, "Please click BACK again to exit",
                Toast.LENGTH_SHORT).show();
    }
    new Handler().postDelayed(new Runnable() {

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

试着做这个,看看这对你是否有用

boolean doubleBackToExitPressedOnce;

@Override
public void onBackPressed() {
    Log.i(TAG, "onBackPressed");

    if (doubleBackToExitPressedOnce) {
        Log.i(TAG, "double click");
        new AlertDialog.Builder(this)
                .setIcon(R.drawable.ic_launcher)
                .setTitle("Esmalteria Cariúcha")
                .setMessage("Sair do Sistema?")
                .setPositiveButton("Sim",
                        new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog,
                                    int which) {
                                finish();
                            }

                        }).setNegativeButton("Não", null).show();
        return;
    } else {
        Log.i(TAG, "single click");
        if (webview.canGoBack()) {
            Log.i(TAG, "canGoBack");
            webview.goBack();
        } else {
            Log.i(TAG, "nothing to canGoBack");
        }
    }

    this.doubleBackToExitPressedOnce = true;
    if (getApplicationContext() == null) {
        return;
    } else {
        Toast.makeText(this, "Please click BACK again to exit",
                Toast.LENGTH_SHORT).show();
    }
    new Handler().postDelayed(new Runnable() {

        @Override
        public void run() {
            doubleBackToExitPressedOnce = false;
        }
    }, 2000);
}
试试这个

private WebView view;
private String urlhome = "http://localhost/Default.aspx";
private static String currenturl = "";
private Boolean close_app = false;

public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        if (view.canGoBack()) {
            String url = view.getUrl();

            if (url.equalsIgnoreCase(urlhome)) {
                if (close_app) {
                    // pressed twice
                    finish();
                } else {
                    Toast.makeText(this, "Press Back again to Exit.",
                            Toast.LENGTH_SHORT).show();
                    close_app = true;
                    new Handler().postDelayed(new Runnable() {
                        @Override
                        public void run() {
                            close_app = false;
                        }
                    }, 3 * 1000);

                    return true;
                }
            } else {
                view.goBack(); //method goback()
                return true;
            }
        } else {
            String url = view.getUrl();
            if (url.equalsIgnoreCase(urlhome)) {
                if (close_app) {
                    // pressed twice
                    finish();
                } else {
                    Toast.makeText(this, "Press Back again to Exit.",
                            Toast.LENGTH_SHORT).show();
                    close_app = true;
                    new Handler().postDelayed(new Runnable() {
                        @Override
                        public void run() {
                            close_app = false;
                        }
                    }, 3 * 1000);

                    return true;
                }
            }else {
                view.loadUrl(urlhome);
                currenturl = urlhome;
                return true;
            }
        }
    }
    return super.onKeyDown(keyCode, event);
}
试试这个

private WebView view;
private String urlhome = "http://localhost/Default.aspx";
private static String currenturl = "";
private Boolean close_app = false;

public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        if (view.canGoBack()) {
            String url = view.getUrl();

            if (url.equalsIgnoreCase(urlhome)) {
                if (close_app) {
                    // pressed twice
                    finish();
                } else {
                    Toast.makeText(this, "Press Back again to Exit.",
                            Toast.LENGTH_SHORT).show();
                    close_app = true;
                    new Handler().postDelayed(new Runnable() {
                        @Override
                        public void run() {
                            close_app = false;
                        }
                    }, 3 * 1000);

                    return true;
                }
            } else {
                view.goBack(); //method goback()
                return true;
            }
        } else {
            String url = view.getUrl();
            if (url.equalsIgnoreCase(urlhome)) {
                if (close_app) {
                    // pressed twice
                    finish();
                } else {
                    Toast.makeText(this, "Press Back again to Exit.",
                            Toast.LENGTH_SHORT).show();
                    close_app = true;
                    new Handler().postDelayed(new Runnable() {
                        @Override
                        public void run() {
                            close_app = false;
                        }
                    }, 3 * 1000);

                    return true;
                }
            }else {
                view.loadUrl(urlhome);
                currenturl = urlhome;
                return true;
            }
        }
    }
    return super.onKeyDown(keyCode, event);
}

几乎!我真的需要双击工作,即使WebVIEW可以回去,所以你可以离开活动中的导航。谢谢你的快速回复很好!!我对你感激不尽!很有魅力!!很乐意帮忙,你:)差不多了!我真的需要双击工作,即使WebVIEW可以回去,所以你可以离开活动中的导航。谢谢你的快速回复很好!!我对你感激不尽!很有魅力!!很乐意帮忙,你:)一个好的答案总是会有一个解释,说明做了什么以及为什么这样做,不仅是为了OP,而且是为了未来的访客。请添加一些说明,让其他人理解。一个好的答案将始终解释所做的事情以及为什么这样做,不仅是为了OP,而且是为了未来的访客。请添加一些说明以使其他人理解。