1

我有以下代码。

public class MyActivity extends Activity
{
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        WebView webview = new WebView(this);
        webview.getSettings().setJavaScriptEnabled(true);

        //Add a client to the view
        webview.setWebViewClient(mClient);
        webview.loadUrl("http://www.google.com");
        setContentView(webview);
    }

    private WebViewClient mClient = new WebViewClient()
    {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url)
        {
            Uri request = Uri.parse(url);
            if(TextUtils.equals(request.getAuthority(), "www.google.com"))
            { //Allow the load
                return false;
            }
            Toast.makeText(MyActivity.this, "Sorry, buddy", Toast.LENGTH SHORT).show();
            return true;
        }
    };
}

理解到 if 条件,但 Toast.makeText() 是做什么的?返回 true 会发生什么?

4

5 回答 5

2

您可以在一个名为 The Documentation 的小地方找到所有答案。

这是 maketext 的一个:http: //developer.android.com/reference/android/widget/Toast.html#makeText%28android.content.Context,%20java.lang.CharSequence,%20int%29

而另一个 shoudOverrideUrl :http: //developer.android.com/reference/android/webkit/WebViewClient.html#shouldOverrideUrlLoading%28android.webkit.WebView,%20java.lang.String%29

可以看到makeText是用来创建Toast的,但是还是需要调用show()方法才能显示出来,所以你的代码是错误的。

至于 shouldOverrideUrlLoading,如果宿主应用程序想要离开当前的 WebView 并自己处理 url,则返回 True,否则返回 false。

您的代码所做的是“如果请求的 url 不是 www.google.com”,请不要加载它并显示错误 toast。

于 2013-09-30T06:33:13.100 回答
1

来自 Android 文档:

http://developer.android.com/reference/android/widget/Toast.html

Toast 是一个包含给用户的快速小消息的视图。

另请参阅:http: //developer.android.com/guide/topics/ui/notifiers/toasts.html

您说您理解“如果”条件:它根据传入的 URL 确定是否将内容加载回此 WebView,以防止用户离开 Google 站点。

于 2013-09-30T06:31:10.903 回答
0

getAuthority() - 获取此 URI 的解码权限部分。if(TextUtils.equals(request.getAuthority(), "www.google.com"))- 它将请求 uri 的 athority 部分与字符串 "www.google.com" 进行比较,如果为 true,则返回 false,否则返回 true它还显示了toast消息(Toast是android中用于显示短消息的对象);

如果提供了 WebViewClient,则 return true 表示宿主应用程序处理 url,而 return false 表示当前 WebView 处理 url。使用 POST “方法”的请求不会调用此方法。

于 2013-09-30T06:31:48.453 回答
0

如果您的 webview 无法加载网页,您可以看到 toast 消息。然后返回 true 后,你的 webview 就完成了。

于 2013-09-30T06:33:34.413 回答
0

它会在您的设备上显示一条短消息,如果您无法加载页面,则会出现“对不起,伙计”

于 2013-09-30T06:28:36.340 回答