WebViewにおけるWebViewClientクラスshouldOverrideUrlLoadingメソッドの理解
皆さんもWebViewというコントロールを使ってUrlやリッチテキストなどの内容をロードすることが多いと思いますが、今日は関公門の前で大刀を振り回して、その中のWebViewClientのshouldOverrideUrlLoading方法を斧で話してください.
すでに掌握したことを知っている私达は复习して、まだ根底を知っていない私达は引き続き読んで、安心して、文章は长くなくて、とても短くて、数分の事.
一.いつ呼び出されますか:
新しいurlがロードされると、つまりユーザーがWebviewコンテンツのハイパーリンクをクリックすると、このメソッドの呼び出しがトリガーされます.
二.なぜ実現するのか:
新しいリンクurlが必要で、現在のWebViewにロードされます.あるいは、自分のアプリケーションが必要です.
三.実装方法:
1.このリンクを現在のWebViewにロードするだけでよい.
つまり、
WebViewがロードする新しいリンクを個別に処理する機会を現在のアプリケーションに提供します.WebViewClientが設定されていない場合、つまりWebViewのsetWebViewClientメソッドが呼び出されていない場合、デフォルトでは、システムブラウザがこの新しいリンクをロードするなどのブラウザアプリケーションを選択させます.では、WebViewClientが設定されている場合、Trueに戻ると、現在のアプリケーションがこの新しいリンクを処理していることを意味します.WebViewがこのリンクをロードする必要はありません.もちろん、Falseに戻ると、WebViewは横に足を踏み入れ、この新しいリンクをロードします.
うん、仕事が終わったら!
すでに掌握したことを知っている私达は复习して、まだ根底を知っていない私达は引き続き読んで、安心して、文章は长くなくて、とても短くて、数分の事.
一.いつ呼び出されますか:
新しいurlがロードされると、つまりユーザーがWebviewコンテンツのハイパーリンクをクリックすると、このメソッドの呼び出しがトリガーされます.
二.なぜ実現するのか:
新しいリンクurlが必要で、現在のWebViewにロードされます.あるいは、自分のアプリケーションが必要です.
三.実装方法:
1.このリンクを現在のWebViewにロードするだけでよい.
webView.setWebViewClient(new WebViewClient());
2.リンクに対して異なる処理を行う. webView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if("www.baidu.com".equals(url)){
......
return true;
}else{
return false;
}
}
});
あれ、もう一つ問題が出てきました.shouldOverrideUrlLoadingメソッドの戻り値は何に使いますか.急がないで、すぐに説明してください./**
* Give the host application a chance to take over the control when a new
* url is about to be loaded in the current WebView. If WebViewClient is not
* provided, by default WebView will ask Activity Manager to choose the
* proper handler for the url. If WebViewClient is provided, return true
* means the host application handles the url, while return false means the
* current WebView handles the url.
* This method is not called for requests using the POST "method".
*
* @param view The WebView that is initiating the callback.
* @param url The url to be loaded.
* @return True if the host application wants to leave the current WebView
* and handle the url itself, otherwise return false.
*/
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return false;
}
これはAndroidソースコードをコピーしたWebViewClientのshouldOverrideUrlLoadingの実現で、実はここまではもう私を必要としませんが、私はどうしても逆の道を歩かなければなりません.つまり、
WebViewがロードする新しいリンクを個別に処理する機会を現在のアプリケーションに提供します.WebViewClientが設定されていない場合、つまりWebViewのsetWebViewClientメソッドが呼び出されていない場合、デフォルトでは、システムブラウザがこの新しいリンクをロードするなどのブラウザアプリケーションを選択させます.では、WebViewClientが設定されている場合、Trueに戻ると、現在のアプリケーションがこの新しいリンクを処理していることを意味します.WebViewがこのリンクをロードする必要はありません.もちろん、Falseに戻ると、WebViewは横に足を踏み入れ、この新しいリンクをロードします.
うん、仕事が終わったら!