2012-01-24 2 views
99

Salut, je suis en train d'analyser xml et de le charger en vue web, après l'analyse, je crée quatre chaînes pour pouvoir ajouter toute la chaîne à une vue. Je suis en mesure d'obtenir deux vues sur la vue Web, mais pas les deux premières chaînes.Comment passer la chaîne html à webview sur android

Pls me suggérer avec mon code, où je vais mal et quelle est la bonne façon d'obtenir les chaînes au format HTML sur la vue web. SVP regardez mon code et aidez-moi à résoudre ce problème.

@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; 
    } 
} 

Je suis en mesure d'obtenir chapterIntro et chaptercontent sur la vue Web, mais pas les deux premières cordes pls me aider amis.

Répondre

115

Pour charger vos données dans WebView. Appeler la méthode de WebView

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

Vous pouvez vérifier cet exemple

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

+0

J'ai essayé avec cela, pas encore le cas aussi essayé avec loadbaserul – cavallo

+0

est-ce censé travailler avec une chaîne contenant le javascript? Il ne fonctionne pas pour moi – Edu

+22

il devrait être 'webView.loadData (yourData," texte/html; charset = utf-8 "," UTF-8 ");' – Jaroslav

137

je l'ai fait avec succès par la ligne ci-dessous

//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", ""); 
+0

ajoutez-vous cela au sur l'index.php/index.html? –

+1

ya si vous voulez, sinon ce sera OK –

+0

Il met à jour l'interface utilisateur après un petit décalage. Comment réparer cette chose? – NarendraJi

18

null Passing serait mieux. Les codes sont pleins comme:

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

ajoutez-vous ceci au sur l'index.php/index.html? –

+0

@mthethelelibeseti ce sont des codes Android, pas du HTML, ou j'ai mal compris votre question? –

Questions connexes