加载网址时的Webview Back按钮

jca*_*uso 0 android back-button progress-bar

所以我在单击列表视图中的记录后尝试加载URL,然后打开一个新活动.一切都很好......除了progressBar显示后退按钮被禁用.我想启用它以便它可以做到finish()

private void loadWebView(String url) {      
    WebSettings settings = web.getSettings();
    settings.setJavaScriptEnabled(true);
    web.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);

    progressBar = ProgressDialog.show(OtherDetailActivity.this, "Please Wait", "Loading Website...");

    web.setWebViewClient(new WebViewClient() {
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            Log.i(Utils.TAG, "Processing webview url click...");
            view.loadUrl(url);
            return true;
        }

        public void onPageFinished(WebView view, String url) {
            if (progressBar.isShowing()) {
                progressBar.dismiss();
            }
        }

        public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
            Log.e(Utils.TAG, "Error: " + description);
            AlertDialog.Builder builder = new AlertDialog.Builder(OtherDetailActivity.this);
            builder.setTitle("Error")
            .setMessage(description)
            .setCancelable(false)
            .setNegativeButton("Close",new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                    dialog.cancel();
                }
            });
            AlertDialog alert = builder.create();
            alert.show();
        }
    });
    web.loadUrl(url);

}
Run Code Online (Sandbox Code Playgroud)

Lib*_*bin 5

您需要设置ProgressDialog为cancelable(true).

progressBar.setCancelable(true);
Run Code Online (Sandbox Code Playgroud)

setCancelable设置此对话框是否可以使用BACK键取消

如果您需要关闭Activity时,Progress dialog dismissBACK键,添加监听像这样和finishActivity.

  progressBar.setOnDismissListener(new DialogInterface.OnDismissListener() {
        @Override
        public void onDismiss(DialogInterface dialog) {
            finish();
        }
    });
Run Code Online (Sandbox Code Playgroud)

由于OnDismissListener通常会在所有对话框dismiss条件下调用,因此您可以设置OnCancelListener仅在对话框中调用时才调用的条件cancelled

 progressBar.setOnCancelListener(new DialogInterface.OnCancelListener() {
        @Override
        public void onCancel(DialogInterface dialog) {
            finish();
        }
    });
Run Code Online (Sandbox Code Playgroud)