【问题标题】:Loading created by ProgressDialog wouldn't stop , how to hide progressbar when page is loadedProgressDialog创建的加载不会停止,页面加载时如何隐藏进度条
【发布时间】:2020-07-13 06:46:10
【问题描述】:

我是 Java 新手,正在尝试创建一个 Web 视图应用程序。加载小部件是使用进度对话框创建的,但它不会停止。我不知道出了什么问题。请帮忙。

public class MainActivity extends AppCompatActivity {
private WebView mywebView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    final ProgressDialog pd = ProgressDialog.show(this, "", "Loading...",true);
    mywebView = (WebView) findViewById(R.id.webview);
    mywebView.getSettings().setJavaScriptEnabled(true);
    mywebView.getSettings().setSupportZoom(true);
    mywebView.getSettings().setBuiltInZoomControls(true);
    mywebView.setWebViewClient(new WebViewClient() {
        @Override
        public void onPageFinished(WebView view, String url) {
            if(pd!=null && pd.isShowing())
            {
                pd.dismiss();
            }
        }
    });
    mywebView.loadUrl("https://google.com");
    mywebView.setWebViewClient(new WvClient());
}
private class WvClient extends WebViewClient
{
    @Override
    public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError er) {
        handler.proceed();
    }
}

@Override
public void onBackPressed() {
    if(mywebView.canGoBack())
    {
        mywebView.goBack();
    }
    else
    {
        super.onBackPressed();
    }
}

}

【问题讨论】:

    标签: java android android-fragments webview progress-bar


    【解决方案1】:

    你已经声明了两次 setWebViewClient ,即在你再次加载 url 之后 用您的自定义客户端声明 setWebViewClient ,正确答案是

        public class MainActivity extends AppCompatActivity {
        private WebView mywebView;
        
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            final ProgressDialog pd = ProgressDialog.show(this, "", "Loading...",true);
            mywebView = (WebView) findViewById(R.id.webview);
            mywebView.getSettings().setJavaScriptEnabled(true);
            mywebView.getSettings().setSupportZoom(true);
            mywebView.getSettings().setBuiltInZoomControls(true);
        webView.setWebViewClient(new WebViewClient() {
        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            super.onPageStarted(view, url, favicon);
            pd.show();
        }
    
        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
            if(pd!=null && pd.isShowing())
                {
                    pd.dismiss();
                }
        }
    
        @Override
        public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
            super.onReceivedError(view, request, error);
             if(pd!=null && pd.isShowing())
                {
                    pd.dismiss();
                }
        }
    });
            mywebView.loadUrl("https://google.com");
            
        }
       
        
        @Override
        public void onBackPressed() {
            if(mywebView.canGoBack())
            {
                mywebView.goBack();
            }
            else
            {
                super.onBackPressed();
            }
        }
        
        }
    

    【讨论】:

    • 感谢您的回复。我试过了,但下面代码中的 pd 变红了。我不知道那是什么意思。 @Override public void onPageFinished(WebView view, String url) { if(pd!=null && pd.isShowing()) { pd.dismiss(); } }
    • 现在它说在 Toast.makeText(getActivity(), "Cannot load page", Toast.LENGTH_SHORT).show() 中找不到符号 getActivity();
    • 删除这一行 Toast.makeText(getActivity(), "Cannot load page", Toast.LENGTH_SHORT).show(); ,更新了我的答案
    • 我将其更改为 getApplication() 及其工作。希望它不会破坏其他任何东西;)。非常感谢。
    • 我很高兴它成功了,请投票并检查勾号图标
    【解决方案2】:

    设置断点

    onPageFinished
    

    看看监听器是否真的被调用了?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-17
      • 1970-01-01
      • 2015-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-21
      • 1970-01-01
      相关资源
      最近更新 更多