2011-09-23 42 views
0

我正在開發一個應用程序,其中我將文本附加到存儲在.html文件中的現有文本中,.html文件的位置位於我的應用程序的「assets」文件夾中。我知道如何使用URL加載HTML,但我的問題是追加文本。 以下是我的Java代碼如何在android中附加額外的文字與現有的html內容?

public class LoadWeb extends Activity { 
    WebView wv; 
    private Handler handler = null; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     wv=(WebView)findViewById(R.id.webView1); 
     handler = new Handler(); 
     wv.getSettings().setJavaScriptEnabled(true); 
     wv.getSettings().setBuiltInZoomControls(true); 
     wv.addJavascriptInterface(this, "contactSupport"); 
     wv.getSettings().setSupportZoom(true); 
     wv.setWebViewClient(new Callback()); 
     // String title=wv.getTitle(); 
    // Log.e("nitin", "msg"+title); 


     setTheme(Color.CYAN); 
     // wv.setInitialScale(100); 




     wv.loadUrl("file:///android_asset/style.html"); 


     } 
    void loadTime() { 
     String TESTSTRING = "'<div style='color:blue; border:1px solid red;'>YO!</div>'"; 
     // TODO Auto-generated method stub 
     Log.e("mitiiiiiii", ""+TESTSTRING); 
     wv.loadUrl("javascript:appendText("+TESTSTRING+")"); 

    } 


    private class Callback extends WebViewClient { 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 


      return(true); 

     } 

     @Override 
     public void onPageFinished(WebView view, String url) { 
      loadTime(); 
      super.onPageFinished(view, url); 
     } 

    } 
    public String deleteContact(final String contactId){ 
     Toast.makeText(getBaseContext(),contactId ,Toast.LENGTH_LONG).show(); 
     handler.post(new Runnable() { 
       public void run() { 
        Toast.makeText(getBaseContext(),contactId ,Toast.LENGTH_LONG).show(); 
       } 
      }); 

     Log.i("nitin"  ,""+contactId); 
     return "http://google.com"; 
    } 

} 

和下面是我的javascript代碼

<html> 
<head> 
<script type="text/javascript"> 
var extraStr; 
function appendText(extraStr) { 

    document.getElementById('question')[0].innerHTML = document.getElementById('question')[0].innerHTML + extraStr; 
    contactSupport.deleteContact(); 
} 

function getUsed() 
{ 
    var total = ""; 
    $(".boxWord.boxWordUsed").each(function (i){ total = total + this.getAttribute('index_no') + ":"; }); 
    return total; 
} 


</script> 
<link href="style.css" media="all" rel="stylesheet" type="text/css" /> 
</head> 
<body> 
<div id="question" class='question' > 
</div> 

任何機構可以告訴我爲什麼事先不工作

感謝。

回答

6

作爲字符串加入HTML(串聯)並不是一個好的解決方案,但是您可以嘗試這種方法,以確保html文檔的神聖性不被破壞。既然你有HTML文檔,它表示你可以控制該文檔,因此你應該能夠做到這一點,我在下面提到。

1)創建HTML

function appendText(extraStr) { 
    document.getElementsByTagName('body')[0].innerHTML =  document.getElementsByTagName('body')[0].innerHTML + extraStr; 
} 

2)的WebView加載通話功能該功能

myWebView.loadUrl("javascript:appendText('extra text or html here')"); 

3)不要忘了添加此

myWebView.getSettings().setJavaScriptEnabled(true); 
+0

它爵士將永久更改我的HTML或暫時請回復我不是非常有經驗的JavaScript.Because我想改變它動態 – Nitin

+0

這將是臨時的,它不會更改您的基本HTML。但是,我向你展示的函數將永遠存在於你的html中。如果你不想這樣做,你仍然可以直接從java中調用函數的實際部分,而不需要添加它。 –

+0

當我應該加載webview後調用此函數我這樣做wv.loadUrl(「file:///android_asset/style.html」); wv.loadUrl(「javascript:appendText(」+ TESTSTRING +「)」);但這不起作用。請建議我正確的方法 – Nitin

相關問題