18

当我第一次创建活动时,一切都很好。但是,在我从菜单中选择更改字符串值的一些文本并设置 webview 之后

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

我必须做两次,否则 webview 将保持不变。有谁知道这里发生了什么?既然结果String是一样的,为什么webview强制我loadData两次呢?

4

4 回答 4

40

避免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);
于 2013-10-30T12:19:40.577 回答
1

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

Webview:loadData 文档

您可能应该像这样调用您的 webview:

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

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

于 2013-07-10T16:37:06.003 回答
0

是的,使用 loadDataWithBaseURL 它确实会刷新数据,但随后它会忽略 CSS 主体背景颜色!...至少它无法解析与 loadData 一起使用的“%23000000”。

于 2018-08-11T13:57:56.497 回答
0

我正在将本地 HTML 数据加载到我的 webview 中,并且这个 webview 在 recyclerview 中,当我尝试 webview.loadData() 第一次渲染时它工作正常,但是当我向上向下滚动时,每个膨胀的 webview 都会搞砸。当我尝试第二个 webview.loadDataWithBaseURL() 时,它的工作就像魅力一样。

因此,当您在本地加载 HTML 并且它引用了也在本地打包的图像和 css 等资产时,请使用 webview.loadDataWithBaseURL()

于 2019-03-28T14:09:55.927 回答