我有以下代码。
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会发生什么?
答案 0 :(得分:2)
您可以在一个名为The Documentation的小地方找到所有答案。
另一个是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,从而防止用户离开Google网站。
答案 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将会完成。