当我尝试使用shouldOverrideUrlLoading()
中的webViewClient()
实施Chrome自定义标签时出现以下错误:
错误的第一个参数类型。找到:'android.webkit.WebViewClient',必填:'android.app.Activity'
这是我的代码 - 我正在使用这个GitHub存储库https://github.com/GoogleChrome/custom-tabs-client。
该错误来自于我对this
关键字的使用。
我在Fragment中,而不是在Activity
mWebView.setWebViewClient(new WebViewClient() {
public boolean shouldOverrideUrlLoading(WebView view, String url) {
CustomTabsIntent customTabsIntent = new CustomTabsIntent.Builder().build();
CustomTabActivityHelper.openCustomTab(this, customTabsIntent, Uri.parse(url), new WebviewFallback());
Toast toast = Toast.makeText(getApplicationContext(),
"This is a message displayed in a Toast" + url, Toast.LENGTH_SHORT);
toast.show();
return true;
}
}
答案 0 :(得分:5)
您使用的this
位于匿名类(new WebViewClient()
)的上下文中,因此this
指的是WebViewClient
的类型。
由于您正在使用片段,因此可以将this
替换为getActivity()
:
CustomTabActivityHelper.openCustomTab(getActivity(), customTabsIntent, Uri.parse(url), new WebviewFallback());
答案 1 :(得分:0)
看起来“this”是您的WebViewClient而非您的Activity。 如果您显示的代码在Activity中,请尝试使用“YourActivity.this”指定。
希望它有所帮助。
答案 2 :(得分:0)
这可能取决于android构建版本问题,下面的代码将在2.3+版本上成功运行,请查看
{{1}}