为了最近创建一个webView,我使用的是webViewClient . mWebView.setWebViewClient(new WebViewClient());
但我需要实现一个进度条 . 当用户单击链接时,将显示此进度条 . 页面完成后,将隐藏进度条并显示webView . 关于this和this,我添加了一个WebChromeClient . 但是它会加载第一个URL,但是当我单击我的网页内的一个按钮时,会打开一个对话框,要求打开哪个应用程序的URL .
我读到我应该覆盖 shouldOverrideUrlLoading()
方法 . 但是我收到一个错误,"shouldOverrideUrlLoading"无法覆盖 WebChromeClient
.
如果你能给出一个带有progressbar和webView的例子,我会很高兴,也可以在同一个webView中打开新的URL .
public class WebActivity extends Activity {
WebView mWebView;
ProgressBar mProgress;
Context mContext;
ProgressBar mProgressBar;
@Override
public void onCreate(Bundle savedInstanceState) {
this.mContext = getApplicationContext();
super.onCreate(savedInstanceState);
setContentView(R.layout.web);
mWebView = (WebView) findViewById(R.id.webview);
mWebView.setWebChromeClient(new myWebChromeClient());
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setUserAgentString("myApp");
mProgressBar = (ProgressBar) findViewById(R.id.webProgressBar);
mProgressBar.setMax(100);
}
public class myWebChromeClient extends WebChromeClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return false;
}
@Override
public void onProgressChanged(WebView view, int newProgress) {
//WebActivity.this.setValue(newProgress);
super.onProgressChanged(view, newProgress);
}
}
}
3 回答
您可以
extends WebViewClient
而不是WebChromeClient
并覆盖onPageStarted
以显示ProgressBar
并在onPageReceived
中将其关闭我在活动中做了一些更改 .
使用 WebViewClient 而不是 WebChromeClient
并使用 ProgressDialog 而不是 ProgressBar
希望这对你有所帮助