簡體   English   中英

在重定向的網址上,ProgressDialog不會關閉

[英]ProgressDialog won't dismiss, on redirected url

我已經用進度對話框創建了簡單的webview,我的問題是,URL重定向時進度對話框不會消失。 例如:我打開的網址是:www.myweb.com/account。 然后將其重定向到:www.myweb.com/login。 有什么解決辦法嗎?

//progress dialog
    ProgressDialog loading;

    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        super.onPageStarted(view, url, favicon);
        loading= new ProgressDialog(MainActivity.this, R.style.MyAlertDialogStyle);
        loading.setMessage("Sedang Memuat...");
        loading.setCancelable(false);
        loading.show();
    }

    @Override
    public void onPageFinished(WebView view, String url) {
            if (loading.isShowing()) {
                loading.dismiss();
            }
        super.onPageFinished(view, url);
    }
webView.setWebViewClient(new WebViewClientClass());
 String url = "http://google.com/";
 webView.getSettings().setJavaScriptEnabled(true);
       webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
        webView.loadUrl(url);



private class WebViewClientClass extends WebViewClient {

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }

        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            super.onPageStarted(view, url, favicon);
            prDialog = new ProgressDialog(NewsActivity.this);
            prDialog.setMessage("Please wait ...");
            prDialog.show();
        }

        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
            if(prDialog!=null){
                prDialog.dismiss();
            }
        }
    }
loading.setCancelable(false);

將此設置為true:

loading.setCancelable(true);

還可以代替:

if (loading.isShowing()) {
                loading.dismiss();
            }
        super.onPageFinished(view, url);

用這個:

super.onPageFinished(view, url);
if (loading!=null) {
            loading.dismiss();
        }

另外,請嘗試評論此行:

super.onPageFinished(view, url);

另一種方法是,如果它不能消除,您可以在這種情況下將其隱藏:

后:

loading.show();

添加:

loading.setVisibility(View.VISIBLE);

然后:

loading.dismiss();

添加:

loading.setVisibility(View.INVISIBLE);

我不認為onPageFinished在每個重定向上都會被調用,這可能是由於使用Iframe或其他原因引起的。 我認為您應該像這樣在WebChromeClient重寫onProgressChanged

myWebView.setWebChromeClient(new WebChromeClient(){

        public void onProgressChanged(WebView view, int newProgress) {
            super.onProgressChanged(view, newProgress);

           if(newProgress <100){
            prDialog.setMessage("Please wait ...");
            prDialog.show();
        }

          else if (newProgress ==100){
               if(prDialog!=null && prDialog.isShowing()){
                  prDialog.dismiss();
        }
       }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM