版权声明:转载请标明本博客地址: https://blog.csdn.net/xiaodouyaer624/article/details/79530099
0号坑:
情景:本地加载HTML页面,请求到网络数据后,对HTML页面中进行部分数据的填充。
问题:我是直接加了HTML页面,然后网络请求成功后将数据进行填充,出现了数据填充不上的情况。
分析:原因是填充数据时HTML页面还没加载完成,导致填充失败。
办法:如下代码-->
//这样设置是为了防止webview页面未加载完成就调用赋值方法而导致的先赋值后加载页面,
// 从而导致赋值失败
webView.setWebViewClient(new WebViewClient() {
// 重写shouldOverrideUrlLoading方法,使点击链接后不使用其他的浏览器打开。
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
// 如果不需要其他对点击链接事件的处理返回true,否则返回false
return true;
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
// TODO Auto-generated method stub
super.onPageStarted(view, url, favicon);
//打开时显示加载框
showProgressDialog("get");
}
@Override
public void onPageFinished(WebView view, String url) {
// TODO Auto-generated method stub
super.onPageFinished(view, url);
//加载完成关闭加载框
webView.post(new Runnable() {
@Override
public void run() {
webView.loadUrl("javascript:AndroidToWeb0('" + butcheryName + "')");
webView.loadUrl("javascript:AndroidToWeb1('" + qualifiedNum + "')");
webView.loadUrl("javascript:AndroidToWeb2('" + sort + "')");
webView.loadUrl("javascript:AndroidToWeb3('" + slauPen + "')");
webView.loadUrl("javascript:AndroidToWeb4('" + veteSign + "')");
webView.loadUrl("javascript:AndroidToWeb5('" + indate + "')");
}
});
hideProgressDialog();
}
});
1号坑:
情景:后台返回业务详情页为HTML字符串,需要显示成HTML页面。
问题:用 WebView 的 loadData(text,"text/html", "UTF-8") 方法出现乱码。
分析:已确认后台编码确实为UTF-8,由于 loadData(text, "text/html; charset=UTF-8", null) 这种方式不会出现乱码,感觉是此方法的第三个编码参数不被WebView解析。
办法:如下代码-->
// 加载HTML字符串进行显示
// webView.loadDataWithBaseURL(null, bean.RECORD.content, "text/html", "UTF-8", null);//这种方式不会乱码
// webView.loadData(bean.RECORD.content,"text/html", "UTF-8");//这种方式会乱码
webView.loadData(bean.RECORD.content, "text/html; charset=UTF-8", null);//这种写法可以正确解码