截取按钮返回webView如果按一次则返回,如果按两次则退出

时间:2017-08-05 02:35:16

标签: javascript java eclipse android-studio webview

我正在使用WebView查看我的离线网页,其中包含几个名为1.html,2.html的html页面,主页面为index.html。它只有一个Mainactivity,现在我在下面使用按两次时退出应用程序的代码。如果按下一次,我想添加返回上一页的功能,按两次后退出应用程序。 这是现在的代码,如果按两次退出应用程序

boolean doubleBackToExitPressedOnce = false;

@Override
public void onBackPressed() {
if (doubleBackToExitPressedOnce) {
super.onBackPressed();
return;
}

this.doubleBackToExitPressedOnce = true;
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);
}

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

我不太确定它是一个好的模式,因为它会让用户感到困惑,如果你想要双回来退出活动,而单回来转到上一页,你应该考虑为活动添加一个后退按钮标题,用户将有一个专用的后退按钮。尽管如此,在这种情况下您可以做的是在超时到期后转到上一页,如下所示

@Override
public void onBackPressed() {
    if (doubleBackToExitPressedOnce) {
        //super.onBackPressed(); use finish instead to close activity
        finish();
        return;
    }
    this.doubleBackToExitPressedOnce = true;
    Toast.makeText(this, "Please click BACK again to exit",Toast.LENGTH_SHORT).show();
    goBack();

    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            doubleBackToExitPressedOnce=false;                       
        }
    }, 2000);
}

public void goBack(){
     if (mWebView.canGoBack()) {
         mWebView.goBack();
     } else {
         finish();
     }
}

希望它有所帮助,Goodluck

答案 1 :(得分:0)

boolean isDouble = false;
private int DURATION = 1000;

@Override
public void onBackPressed() {
    if (isDouble) {
        finishAndRemoveTask();
        return;
    }

    isDouble = true;
    finish();

    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            isDouble=false;                       
        }
    }, DURATION);
}