3

Webviewに問題があります。onProgressChangedメソッドをオーバーライドする独自のWebChromeClientクラスをプログラミングしています。これは、ページの読み込みが完了したときにページを表示してから、スプラッシュ画面を非表示にするためです。特定のURLで発生させたいので、実際のWebView URLを特定の文字列と比較しますが、問題がありますwebview.getUrl()。メソッドが呼び出されてアプリケーションが終了すると、nullポインターが返されます。

これはコードです:

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);
        }
    }
}

これは、Webビューがページをレンダリングするのに3〜4秒かかるのを避けるためですが、機能しません。以前に使用したコードは次のとおりです。

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);
        }
    }
}
4

1 に答える 1

2

でこれが可能かどうかはわかりませんがWebChromeClient、使用してこれを行うことができました

WebViewClientと過負荷onLoadResourceonReceivedErrorおよびonPageFinished

これは私がやったことです

onLoadResource     
 mwebview.setVisibility(View.GONE);


onReceivedError
mwebview.setVisibility(View.VISIBLE);

onPageFinished
mwebview.setVisibility(View.VISIBLE);

そして最初にXMLでwebviewはGONEとして設定されます

android:visibility="gone"

私も Facebook で使用していますが、問題なく動作します。

于 2010-07-05T12:20:11.727 に答える