我有以下简单的活动:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
wv = (WebView) findViewById(R.id.webview);
wv.setWebChromeClient(new CustomWebViewClient());
}
我为自定义的webclient找到了以下代码片段,并希望在上面的活动中使用它:
private class CustomWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if(url.contains("mysite.com")) {
view.loadUrl(url);
} else {
Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(i);
}
return true;
}
}
我知道错误:
错误:(53,11)错误:类setWebChromeClient中的方法WebView不能应用于给定类型;必需: WebChromeClient查找: MainActivity.CustomWebViewClient原因:实际参数MainActivity.CustomWebViewClient不能通过方法调用转换转换为WebChromeClient
我做错了什么?
发布于 2015-04-21 12:54:44
我相信你把WebViewClient和WebChromeClient搞混了。如果要调用setWebChromeClient
方法,则参数应该从WebChromeClient
而不是WebViewClient
派生,对于WebViewClient
,应该使用setWebViewClient
。
发布于 2015-04-21 12:51:54
WebViewClient
如果您打算使用WebViewClient
,那么只需将WebViewClient
替换为WebChromeClient
,并使用接受WebViewClient
对象的方法,即,
wv.setWebViewClient(new CustomWebViewClient());
WebChromeClient
您需要在您的WebChromeClient
中扩展CustomWebViewClient
。
setWebChromeClient()
需要一个WebChromeClient
对象作为参数。
更改您的类解密:
private class CustomWebViewClient extends WebViewClient {
至
private class CustomWebViewClient extends WebChromeClient {
https://stackoverflow.com/questions/29782766
复制相似问题