加载Webview的对话框

时间:2011-09-27 11:48:34

标签: java android

这件事让我发疯了。我的应用程序加载webview并在初始加载时显示加载对话框。我希望每次单击链接或每次加载webview时都会显示加载对话框。这种情况没有发生。

Eclipse告诉我onPageStarted()在本地没有使用,虽然onPageFinished()工作正常!?

任何人都可以看到出了什么问题,我已经粘贴了以下所有活动:

   package com.jeh.myapp;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.Window;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class MyActivity extends Activity {

    WebView myWebView;
    public static final String TAG = "Main";
    public ProgressDialog progressBar; 
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //Remove title bar as we already have it in the web app
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
        //Point to the content view defined in XML
        setContentView(R.layout.main);
        //Configure the webview setup in the xml layout
        myWebView = (WebView) findViewById(R.id.webview);
        WebSettings webSettings = myWebView.getSettings();
        //Yes, we want javascript, pls.
        webSettings.setJavaScriptEnabled(true);

        progressBar = ProgressDialog.show(MyActivity.this, "Diag Title", "Loading...");


        //Make sure links in the webview is handled by the webview and not sent to a full browser
        myWebView.setWebViewClient(new WebViewClient() {


            //this bit causes problems, if I add @Override here it says to remove, where as the current code marks onPageStarted yellow and says it's not used locally!? - yet onPageFinsihed() below works fine?
            public void onPageStarted(WebView view, String url, Bitmap favicon) {

                progressBar.show();
            }


             public void onPageFinished(WebView view, String url) {
                 Log.i(TAG, "Finished loading URL: " +url);
                 if (progressBar.isShowing()) {
                     progressBar.dismiss();
                 }
             }

        });
        //Load URL:
        myWebView.loadUrl("http://www.google.com");



    }

1 个答案:

答案 0 :(得分:0)

易。 没有

void onPageStarted(WebView view, String url)
WebViewClient中的

方法,只需使用:

@Override
void onPageStarted(WebView view, String url, Bitmap favicon)

这些错误很容易制作,很难找到。你应该使用@Override关键字,只要你知道你正在覆盖一个方法(在你的情况下会标记一个错误)。

尝试以这种方式修改您的来源:

//Make sure links in the webview is handled by the webview and not sent to a full browser
myWebView.setWebViewClient(new WebViewClient() {
    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        progressBar.show();
    }

    @Override
     public void onPageFinished(WebView view, String url) {
         Log.i(TAG, "Finished loading URL: " +url);
         if (progressBar.isShowing()) {
             progressBar.dismiss();
         }
     }

});