必须加载数据两次才能在Android中刷新WebView

时间:2013-07-06 10:07:24

标签: android webview loaddata

当我第一次创建活动时,一切都很顺利。但是,在我从菜单中选择更改字符串值的某些文本并通过

设置webview之后
webview.loadData(result, "text/html; charset=UTF-8", null);
webview.loadData(result, "text/html; charset=UTF-8", null);

我必须做两次,否则webview将保持不变。有谁知道这里发生了什么?由于结果字符串是相同的,为什么webview强迫我两次loadData?

4 个答案:

答案 0 :(得分:26)

避免WebView#loadData(String data, String mimeType, String encoding) - 这是错误的。

请改用WebView#loadDataWithBaseURL(String baseUrl, String data, String mimeType, String encoding, String historyUrl)

所以你的指示就像:

webview.loadDataWithBaseURL(null,result,"text/html", "utf-8", null);

答案 1 :(得分:0)

不知道你的问题是什么,但是看一下webview文档,你错误地使用了loadData方法:

Webview:loadData documentation

您可能应该像这样调用您的网页视图:

webview.loadData(result, "text/html", "UTF-8");

不知道它是否能解决你的问题。

答案 2 :(得分:0)

我正在将本地HTML数据加载到我的Web视图中,并且该Web视图位于recyclerview中, 当我尝试webview.loadData()第一次渲染时,它可以正常工作,但是当我向下滚动时,每个膨胀的webview都会陷入混乱。 当我尝试第二个webview.loadDataWithBaseURL()时,它的工作原理就像魅力。

因此,当您在本地加载HTML时,它引用的资产(例如图像和CSS)也都在本地打包,请使用webview.loadDataWithBaseURL()

答案 3 :(得分:-1)

是的,使用loadDataWithBaseURL可以刷新数据,但是会忽略CSS正文的background-color! ...至少它不能解析与loadData一起使用的“%23000000”。