【求助】解析网页后填充到TextView里,链接不能点击的问题!

曹笑 发布于 2013/12/31 13:01
阅读 197
收藏 0
谢谢大家。
我是用Jsoup解析得到网页的Document对象,然后:
Element AnswersDiv = doc.getElementById("zh-question-answer-wrap");
String contentStr = AnswersDiv.html();
content.setText(Html.fromHtml(contentStr)); //content是我的TextView对象
content.setMovementMethod(LinkMovementMethod.getInstance()); //为了使TextView上的链接能点击


这样在Activity上显示了网页内容,但是上面的文字超链接和网址链接不能点,一点纠错,说Intent有问题,打不开指定的Activity,我发现网页的源码中网址链接前面都带“goto”的前缀,例如:
href="/goto/ http://www.zhihu.com/question/21503933 "
应该是因为这个原因吧?应该怎么改呢?

加载中
0
曹笑
曹笑

问题已经解决,用Jsoup.parse()获取到Document对象之后,先使用一系列方法(包括选择器)修改Document对象中a标签的href值(把“goto”全去掉),就可以了。

这是修改后的代码:

try {
					doc = Jsoup.parse(new URL(href), 5000);
				} catch (MalformedURLException e) {
					e.printStackTrace();
				} catch (IOException e) {
					e.printStackTrace();
				}
				// 去广告
				doc.select(
						"[style=float:left;padding:2px;overflow:hidden;margin:3px 2px 1px 0px;]")
						.remove();
				// 修改超链接的href属性(去掉"/goto/"前缀)
				Elements es = doc.select("a[href^=/goto/]");
				for (Element e : es) {
					String hrefHead = e.attr("href");
					e.removeAttr("href");
					e.attr("href", hrefHead.substring(6));
				}
				Element main = doc.getElementsByClass("main").first();
				titleStr = main.getElementsByTag("h2").first().text();
				contentStr = main.getElementsByClass("article").first().html();




返回顶部
顶部