这件事让我发疯了。我的应用程序加载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");
}
答案 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();
}
}
});