android webview跳转,记一件需要反省的事——如何实现webView内部跳转

起因

今天在做一个“WebView内部跳转”的小需求时,发现了一件比较诡异的事:项目中没有在 shouldOverrideUrlLoading中主动去用view.loadUrl逻辑处理,为何能够实现WebView内部跳转呢?

带着这个小疑惑,我去问了一个厉害的同事,他说道,只要shouldOverrideUrlLoading返回值为false,即可实现内部跳转。

听到这个我有些困扰,因为记忆中一直是需要手动去load新的url才能实现,否则就跳浏览器的。然后google了下,就搜到以下两个:

我的内心是崩溃的。。

分析原因

我之所以会记错技术点,小原因有三:

1,我之前使用WebView都比较简单,没有去设置WebViewClient,所以会有链接跳转都交由系统处理的惯性思维;

2,在之前的项目中,接触到了系统对webView中的以http协议开头的处理,更加加深了“系统会主动去处理链接”的想法;

3,然后就是之前包括刚刚搜索了几次“webView 内部跳转”,都是说需要手动去调用view.loadUrl处理的博客。

最后,一个最大的原因就是,求知之心不够坚定,对技术细节不求甚解。

比如,虽然搜索“webView 内部跳转”不管google还是百度都被错误用法的那篇博客占领,但是如果我有对shouldOverrideUrlLoading多搜索多一步了解,那势必可以避免这个问题。

由这点联想到平时的学习习惯,深感自己应该好好反省。

在这里定下以后的学习习惯:任何安卓相关的技术点,必然要有官网的资料作为佐证,否则得自己去写个小程序验证,才能真正“相信”。

也许各位看客可能会觉得我有点小题大做,但是对于经历过这样尴尬时刻的我而言,这绝不是一件小事。我对自己最低的要求就是做事认真。

嗯,反正以此为戒吧。

如何实现webView内部跳转

现在回到原题,“如何实现webView内部跳转”的结论是什么呢?

1, 若没有设置 WebViewClient 则在点击链接之后由系统处理该 url,通常是使用浏览器打开或弹出浏览器选择对话框。

2, 若设置 WebViewClient 且该方法返回 true ,则说明由应用的代码处理该 url,WebView 不处理。

3, 若设置 WebViewClient 且该方法返回 false,则说明由 WebView

处理该 url,即用 WebView 加载该 url。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值