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);//這種寫法可以正確解碼