开发者社区> 听着music睡> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

安卓开发_关于WebView使用链接时调用浏览器显示的问题

简介: 在我们的实际开发中,我们用到WebView就是为了在自己的APP中的某个部分来显示指定网页的效果。 但是在学习的过程中,我发现一个问题: 有的网页使用WebView控件显示出来以后,再点击网页中的某个链接,进入到下一个网页,它没有在APP中继续显示,而是要在手机浏览器中显示网址,这显示没有了良好的人机交互体验。
+关注继续查看

在我们的实际开发中,我们用到WebView就是为了在自己的APP中的某个部分来显示指定网页的效果。

但是在学习的过程中,我发现一个问题:

有的网页使用WebView控件显示出来以后,再点击网页中的某个链接,进入到下一个网页,它没有在APP中继续显示,而是要在手机浏览器中显示网址,这显示没有了良好的人机交互体验。(PS:这个问题有的网页是不出现的,本人没有大量测试,估计是我在Fragment中使用WebView的原因,在Activity中就没有这个问题,不管怎么样,加上相应的代码就可以了)

 

下面来看代码

 1 package com.example.qunxiong;
 2 
 3 import android.os.Bundle;
 4 import android.support.v4.app.Fragment;
 5 import android.view.LayoutInflater;
 6 import android.view.View;
 7 import android.view.ViewGroup;
 8 import android.webkit.WebSettings;
 9 import android.webkit.WebView;
10 import android.webkit.WebViewClient;
11 
12 public class FragmentShow extends Fragment{
13     private WebView webview;
14     @Override
15     public View onCreateView(LayoutInflater inflater, ViewGroup container,
16             Bundle savedInstanceState) {
17         // TODO Auto-generated method stub
18     
19         
20         
21         return inflater.inflate(R.layout.web_show, container,false);
22     }
23     @Override
24     public void onViewCreated(View view, Bundle savedInstanceState) {
25         // TODO Auto-generated method stub
26         super.onViewCreated(view, savedInstanceState);
27         webview = (WebView) view.findViewById(R.id.webview);
28         WebSettings settings = webview.getSettings();
29         settings.setJavaScriptEnabled(true);
30         //设置在APP内部打开网址链接
31         webview.setWebViewClient(new webViewClient());
32         
33         //支持缩放
34         settings.setUseWideViewPort(true);//设定支持viewport
35         settings.setLoadWithOverviewMode(true);
36         settings.setBuiltInZoomControls(true);
37         settings.setSupportZoom(true);//设定支持缩放   
38         
39         //打开的网址
40         webview.loadUrl("http://www.527fgame.com/news.html");
41     }
42     //设置在APP内部打开网址链接
43     class webViewClient extends WebViewClient{
44         @Override
45         public boolean shouldOverrideUrlLoading(WebView view, String url) {
46             // TODO Auto-generated method stub
47             view.loadUrl(url);
48             return true;
49         }
50     }
51 }

代码很简单,都给了相应的注释了

其中关键的代码

1 //设置在APP内部打开网址链接
2         webview.setWebViewClient(new webViewClient());
1 //设置在APP内部打开网址链接
2     class webViewClient extends WebViewClient{
3         @Override
4         public boolean shouldOverrideUrlLoading(WebView view, String url) {
5             // TODO Auto-generated method stub
6             view.loadUrl(url);
7             return true;
8         }
9     }

加上之后,就不会出现在浏览器中显示网页的问题了

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
使用 PlantUML 画 UML(上)类图
大家平日在写技术文档时,往往都有画 UML 图的需要,PrecessOn 或者 darw.io 等来绘制 UML 勉强可用但是不够专业。这里为大家推荐一个专门画UML的工具: PlantUML
78 0
使用PlantUML画UML(下) 时序图
UML 序列图 序列图是仅次于类图的最常用 UML 图。 序列图将交互关系表示为一个二维图,纵向是时间轴,时间沿竖线向下延伸;横向轴代表了在协作中各个角色,一般是一个 Class 的对象,用一条虚线代
34 0
使用ABAP调用BRF+ function
使用ABAP调用BRF+ function
22 0
OpenJPA错误之一 This configuration disallows runtime optimization
参照http://blog.csdn.net/rcom10002/article/details/6568809,一运行就报错Exception in thread "main" org.
1200 0
浏览器跨域问题 jsonp
惯例: 我是温浩然: 诚实一点,学得别人的,就是转载的。 网址:http://www.cnblogs.com/dowinning/archive/2012/04/19/json-jsonp-jquery.html 只有浏览器有跨域的问题,所以说,这篇文章是为了解决浏览器的跨域问题。 跨域传输数据用jsonp格式。至于想知道什么是jsonp,看上面的网址去。大神写的。 根据文章的
1088 0
putty使用ssh连接时Ctrl+S锁定屏幕解决办法
在使用Putty连接linux系统,编辑文件等时候,习惯性地使用Ctrl+S键,导致putty界面屏幕锁定,无法输入,此时可以使用Ctrl+P来解决
845 0
+关注
听着music睡
Android开发工程师
219
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载