Как добавить дополнительный текст с существующим содержанием HTML в Android? - PullRequest
0 голосов
/ 23 сентября 2011

Я занимаюсь разработкой приложения. В котором я добавляю текст к существующему тексту, который хранится в файле .html, местоположение файла .html находится в папке "assets" моего приложения. Я знаю, как загрузить HTML с URL, но моя проблема заключается в добавлении текста. ниже мой код Java

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>

Может ли какой-нибудь орган сказать мне, почему он не работает

Заранее спасибо.

1 Ответ

7 голосов
/ 23 сентября 2011

Присоединение к 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...