onPageFinished()从未调用过(webview)!

时间:2011-07-16 19:48:40

标签: android load webview toast

我想在webview完全加载时显示吐司。但吐司永远不会出现,我不知道为什么......我的代码是:

public class WebViewSignUp extends Activity{

    WebView mWebView;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.webviewsignup);

        mWebView = (WebView) findViewById(R.id.webview);
        mWebView.getSettings().setJavaScriptEnabled(true);

        ((TextView)findViewById(R.id.home)).setOnClickListener(new OnClickListener(){
            public void onClick(View v) {
                finish();
            } 
         });

    mWebView.setWebViewClient(new WebViewClient() {
        @Override  
        public void onPageFinished(WebView view, String url) {
             super.onPageFinished(mWebView, url);

            Toast.makeText(getApplicationContext(), "Done!", Toast.LENGTH_SHORT).show();
        }  
    });
    mWebView.loadUrl("http://pabebbe.com/m/register");

    mWebView.setWebViewClient(new WebViewClient() {
       public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
         Toast.makeText(getApplicationContext(), "Oh no! " + description, Toast.LENGTH_SHORT).show();
       }
       });
    }
}

2 个答案:

答案 0 :(得分:43)

第二次调用setWebViewClient()会覆盖第一次。

只创建一个WebViewClient个实例,并在同一个类中包含两个覆盖,并且只调用setWebViewClient一次。然后加载Webview:

mWebView.setWebViewClient(new WebViewClient() {
    @Override  
    public void onPageFinished(WebView view, String url) {
        super.onPageFinished(mWebView, url);
        Toast.makeText(getApplicationContext(), "Done!", Toast.LENGTH_SHORT).show();
    }  

    @Override
    public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
        Toast.makeText(getApplicationContext(), "Oh no! " + description, Toast.LENGTH_SHORT).show();
    }
});
mWebView.loadUrl("http://pabebbe.com/m/register");

答案 1 :(得分:0)

@mportuesisf 是 100% 正确的,还要注意在回调中你调用了错误的 webview 的 onPageFinished。如果您使用客户端有多个 webview,这可能是相关的。我会修复:

super.onPageFinished(mWebView, url);

super.onPageFinished(view, url);