无法理解Toast.maketext()

时间:2013-09-30 06:26:21

标签: android

我有以下代码。

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会发生什么?

5 个答案:

答案 0 :(得分: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。

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

答案 1 :(得分:1)

来自Android文档:

  

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

     

toast是一个包含用户快速消息的视图。

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

您说您理解“if”条件:它根据传入的URL确定是否将内容加载回此WebView,从而防止用户离开Goog​​le网站。

答案 2 :(得分:0)

它会在您的设备上显示一条短信,如果您无法加载该页面,则会显示“抱歉,好友”

答案 3 :(得分:0)

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

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

答案 4 :(得分:0)

如果您的网页视图无法加载网页,则可以看到Toast消息。返回true后,你的webview将会完成。