【发布时间】:2013-10-25 08:08:36
【问题描述】:
为了创建一个 webView,我最近使用了 webViewClient。 mWebView.setWebViewClient(new WebViewClient());
但我需要实现一个进度条。当用户单击链接时,此进度条将可见。页面完成后,进度条将被隐藏,webView 将可见。关于this 和this,所以我添加了一个WebChromeClient。但是它会加载第一个 URL,但是当我单击网页内的按钮时,会打开一个对话框并询问使用哪个应用程序打开 URL。
我读到我应该重写shouldOverrideUrlLoading() 方法。但我收到一个错误,“shouldOverrideUrlLoading”不能被 WebChromeClient 覆盖。
如果你能举一个有进度条和 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);
}
}
}
【问题讨论】: