【Android】 用WebView踩的坑

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

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章