Cara mengoper string html ke tampilan web di android


141

Hai Saya parsing xml dan kemudian memuatnya ke tampilan web, setelah parsing saya membuat empat string sehingga saya bisa menambahkan semua string ke satu tampilan. Saya bisa mendapatkan dua tampilan pada tampilan web tetapi bukan dua string pertama.

Tolong sarankan saya dengan kode saya, di mana saya salah dan apa cara yang benar untuk mendapatkan string html diformat pada tampilan web. Tolong lihat kode saya dan bantu saya memecahkan masalah ini.

@Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        String chapterTitle = "";
        String SubChapterTitle="";
        String chapterIntro ="";
        String chapterContent="";
        View view = convertView;
        if (convertView == null) {
            // view = inflater.inflate(resourceid, null);
            view = getLayoutInflater().inflate(R.layout.webviewitem, null);
        }
        synchronized (view) {
            WebView wv = (WebView) view.findViewById(R.id.contentWebView);

            WebSettings settings = wv.getSettings();
            settings.setUseWideViewPort(true);
            settings.setLoadWithOverviewMode(true);
            settings.setJavaScriptEnabled(true);
            settings.setDefaultZoom(ZoomDensity.FAR);
            // wv.setBackgroundColor(0);
            wv.setVerticalScrollBarEnabled(false);
            wv.setHorizontalScrollBarEnabled(false);
            /*String txtChapTitle = Intro.book.getsecretList().get(position)
                    .getChtitle().toString();*/

            if (!(Intro.book.getsecretList().get(position).getChtitle()
                    .toString().equals(""))){
            chapterTitle = "<b><fontSize=4>"+Intro.book.getsecretList().get(position)
            .getChtitle().toString()+"</font></b>";
            }
            if (!(Intro.book.getsecretList().get(position)
                    .getSubtitle() == null)) {
                SubChapterTitle = "<b><fontSize=4>"+Intro.book.getsecretList().get(position)
                .getSubtitle().toString()+"</font></b>";
            }
            if (!(Intro.book.getsecretList().get(position)
                    .getIntro() == null)) {
            chapterIntro = "<b><fontSize=2>"+Intro.book.getsecretList().get(position)
                .getIntro().toString()+"</font></b>";
            }
            if (!(Intro.book.getsecretList().get(position)
                    .getContent() == null)) {
            chapterContent = "<fontSize=2>"+Intro.book.getsecretList().get(position)
                .getContent().toString()+"</font>";
            }

            StringBuilder content = new StringBuilder();
            content.append(chapterTitle+SubChapterTitle+chapterIntro+chapterContent);

            JsInterface Jsi = new JsInterface();
            Jsi.wordDef = content ;
            Log.v("Content", "" +content);
            wv.addJavascriptInterface(Jsi, "interfaces");

            wv.setWebViewClient(new WebViewClient() {
                @Override
                public void onPageFinished(WebView view, String url) {
                    view.setHapticFeedbackEnabled(false);
                }
            });

            wv.setWebChromeClient(new WebChromeClient() {
                @Override
                public boolean onJsAlert(WebView view, String url,
                        String message, JsResult result) {
                    return super.onJsAlert(view, url, message, result);
                }
            });

            wv.loadUrl("file:///android_asset/wordview.html");
        }
        return view;
    }
}

Saya bisa mendapatkan chapterIntro dan chaptercontent di tampilan web tetapi bukan dua string pertama tolong bantu saya teman.

Jawaban:


190

Saya telah berhasil melakukan dengan garis di bawah ini

 //data == html data which you want to load 
 WebView webview = (WebView)this.findViewById(R.id.webview);
 webview.getSettings().setJavaScriptEnabled(true);
 webview.loadDataWithBaseURL("", data, "text/html", "UTF-8", "");

apakah Anda menambahkan ini ke <head> pada index.php / index.html?
Mthe beseti

1
ya jika Anda mau, jika tidak maka akan baik-baik saja
Siddhpura Amit

Ini memperbarui UI setelah sedikit lag. Bagaimana cara memperbaikinya?
Narendra Singh

dapatkah saya menggunakan "teks / html", "UTF-8", jika saya ingin meneruskan fungsi html ke javascript menggunakan webView.loadUrl ("javascript: MyFunction (data," teks / html "," UTF-8 ")?
user1788736

Tidak, saya belum pernah menggunakan ini
Siddhpura Amit

168

Untuk memuat data Anda di WebView. Panggil metode loadData () dari WebView

webView.loadData(yourData, "text/html; charset=utf-8", "UTF-8");

Anda dapat memeriksa contoh ini

http://developer.android.com/reference/android/webkit/WebView.html


saya mencoba dengan itu, masih tidak terjadi juga mencoba dengan loadbaserul
cavallo

apakah itu seharusnya bekerja dengan string yang mengandung javascript? Ini tidak bekerja untuk saya
Edu

27
seharusnyawebView.loadData(yourData, "text/html; charset=utf-8", "UTF-8");
Jaroslav

5
"Text / html; charset = utf-8" membuat perbedaan besar, karakter simbol tidak ditampilkan dengan benar tanpa itu.
Mic Fok

29

Melewati nol akan lebih baik. Kode lengkapnya seperti:

WebView wv = (WebView)this.findViewById(R.id.myWebView);
wv.getSettings().setJavaScriptEnabled(true);
wv.loadDataWithBaseURL(null, "<html>...</html>", "text/html", "utf-8", null);

apakah Anda menambahkan ini ke <head> pada index.php / index.html?
Mthe beseti

@mthethelelibeseti ini adalah kode Android, bukan HTML. Atau saya salah mengerti pertanyaan Anda?
Jeffrey Neo

Ini adalah solusi yang berfungsi untuk semua jenis string html. Terima kasih @JeffreyNeo
Akash Bisariya

2

Memuat data normal tidak berfungsi untukku, mengubah ke Base64 berfungsi dengan baik.

String unencodedHtml ="<html><body>'%28' is the code for '('</body></html>";
tring encodedHtml = Base64.encodeToString(unencodedHtml.getBytes(), Base64.NO_PADDING);
webView.loadData(encodedHtml, "text/html", "base64");

Temukan detail di WebView

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.