WebView.getUrl()返回null

时间:2010-07-05 11:48:01

标签: android webview geturl

我对Webview有疑问。我正在编写自己的WebChromeClient类来覆盖onProgressChanged方法,因为我想在完成加载时显示页面,然后隐藏启动画面。因为我只是希望它与特定的URL一起发生,我将实际的WebView url与特定的字符串进行比较,但是有一个问题,当调用webview.getUrl()方法并且我的应用程序完成时,我得到一个空指针。 这是代码:

private class MyWebChromeClient extends WebChromeClient {
    @Override
    public void onProgressChanged (WebView webview, int newProgress) {
        super.onProgressChanged(webview,newProgress);
        if(webview.equals(w1) && newProgress == 100 && webview.getUrl().startsWith("https://ssl.facebook.com/login.php")) { 
            webview.setVisibility(WebView.VISIBLE);
            ImageView imageview = (ImageView)findViewById(R.id.ivsplash);
            imageview.setVisibility(ImageView.GONE);
            ProgressBar progressbar = (ProgressBar)findViewById(R.id.pbsplash);
            progressbar.setVisibility(ProgressBar.GONE);
        }
    }
}

我这样做是为了避免webview需要三到四秒的时间来呈现页面,但它不起作用。我之前使用的代码是:

private class MyWebViewClient extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView webview, String url) {
        super.shouldOverrideUrlLoading(webview, url);
        webview.loadUrl(url);
        return true;
    }

    @Override
    public void onPageFinished(WebView webview, String url) {
        if(url.startsWith("https://ssl.facebook.com/login.php")) {
            webview.setVisibility(WebView.VISIBLE);
            ImageView imageview = (ImageView)findViewById(R.id.ivsplash);
            imageview.setVisibility(ImageView.GONE);
            ProgressBar progressbar = (ProgressBar)findViewById(R.id.pbsplash);
            progressbar.setVisibility(ProgressBar.GONE);
        }
    }
}

由于

1 个答案:

答案 0 :(得分:2)

不确定WebChromeClient是否可行,但我可以使用

执行此操作

WebViewClient并重载onLoadResourceonReceivedErroronPageFinished

这就是我所做的

onLoadResource     
 mwebview.setVisibility(View.GONE);


onReceivedError
mwebview.setVisibility(View.VISIBLE);

onPageFinished
mwebview.setVisibility(View.VISIBLE);

并且在XML中,webview设置为GONE

android:visibility="gone"

我也将它用于Facebook并且工作正常。