打开互联网后重新加载webview

时间:2014-12-06 13:56:37

标签: android webview reload

我正在尝试将网址加载到网页视图中。如果有互联网连接,则应将其加载到webview。否则,应显示再次尝试屏幕。在再次尝试屏幕中,我再试一次按钮。如果我们点击它,则应该再次加载该URL。但是使用我已经完成的代码,当我尝试通过点击“再试一次”按钮重新加载网址时,应用程序会一直崩溃(即使我打开网络或者它仍然关闭)。这是我的代码

    tryAgainButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            tryAgainLayout.setVisibility(View.GONE);
            browser = (WebView)findViewById(R.id.webView1);
            open(browser);
        }
    });



private void open(View view){
    browser.getSettings().setLoadsImagesAutomatically(true);
    browser.getSettings().setJavaScriptEnabled(true);
    browser.getSettings().setAppCacheEnabled(true);
    browser.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
    browser.getSettings().setSupportMultipleWindows(true);
    browser.setWebViewClient(new MyBrowser());
    browser.setWebChromeClient(new MyCustomChromeClient());
    mContext=this.getApplicationContext();
    browser.loadUrl(target_url);
    MainActivity.this.progressBar.setProgress(0);
    browser.setDownloadListener(new DownloadListener() {
        public void onDownloadStart(String url, String userAgent,
                                    String contentDisposition, String mimetype,
                                    long contentLength) {
            Intent intent = new Intent(Intent.ACTION_VIEW);
            intent.setData(Uri.parse(url));
            startActivity(intent);
        }
    });
}

如何在点击“再试一次”按钮时重新加载页面。

1 个答案:

答案 0 :(得分:1)

这里有一点假设,因为没有logcat:

  1. 应用崩溃是因为您尝试通过在错误的布局/视图中搜索来获取浏览器视图。
  2. 如果您只是想重新加载,最好只需执行 browser.reload() int点击侦听器
  3. 编辑简单的解决方案:创建一个侦听器类并将webView作为参数传递给构造函数,以便它知道要重新加载的内容。

    class WebViewReloader implements View.OnClickListener{
        private WebView browser = null;
    
        public WebViewReloader(WebView target){
            browser = target;
        }
    
        @Override
        public void onClick(View view) {
            tryAgainLayout.setVisibility(View.GONE);
            browser.reload();
        }
    }
    

    然后

    tryAgainButton.setOnClickListener(new WebViewReloader(browser));
    

    其他解决方案:使用WebView的静态引用,或通过搜索其父布局来检索WebView。