错误的第一个参数类型。找到:android.webkit.WebViewClient,必需:android.app.Activity

时间:2015-09-08 11:59:53

标签: android chrome-custom-tabs

当我尝试使用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;
    }

}

3 个答案:

答案 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}}