Android应用关闭没有任何错误 - WebView Javascript

时间:2013-06-28 13:20:32

标签: javascript android

我有一个带有HTML网页的webview,它从服务器上下载,我填充动态数据并向这个网页添加信息行。我在该网页上使用了以下代码来启用javascript:

    class JSClass {
    Context jsContext;
    JSClass(Context c){
        jsContext = c;
}
public void getHTMLContent(String info)
{
    Log.i(TAG, "Info: "+info);
}
}

WebView webview = (WebView) findViewById(R.id.webView);
webview.loadDataWithBaseURL("", htmlcontent, "text/html", "utf-8", "");
webview.getSettings().setJavaScriptEnabled(true);
webview.setWebChromeClient(new WebChromeClient());
webview.addJavascriptInterface(new JSClass(this), "Android");
webview.loadUrl("javascript:"+
    "var rows = document.getElementsByClassName('info');"+
    "if(rows !== null){"+
    "for(var i=0;i<rows.length;i++){"+
    "rows[i].onclick = function(){"+
    "var workId = 0;"+
    "workId = parseInt(this.cells[0].innerHTML);"+
    "window.Android.getHTMLContent(workId);"+
    "}}}"
);

当我点击任何一行时,我会根据行数据从服务器下载图像。它在第一次单击时工作正常,但第二次单击时,应用程序关闭,没有任何错误。我不明白原因。请帮忙。提前致谢

2 个答案:

答案 0 :(得分:0)

我认为您需要再次使用loadDataWithBaseURL,而不仅仅是loadUrl

请参阅this链接。有一节解释loadData说:

  

请注意,JavaScript的相同原始策略意味着在使用此方法加载的页面中运行的脚本将无法访问使用“数据”以外的任何方案加载的内容,包括“http(s)”。要避免此限制,请将loadDataWithBaseURL()与适当的基本URL一起使用。

答案 1 :(得分:0)

最后!!修复它..适配器拿着以前下载的图像以及在第二次点击期间下载的图像,我不明白为什么应用程序关闭而没有给出任何内存泄漏..无论如何它使用后工作正常

adapter.clear();

或在下载完所有图像拇指后将适配器重新初始化为null(我不知道这是否非常有效)。清除适配器后,使用

adapter.notifyDataSetChanged();