2011-09-23 44 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

相关问题