0

我有一个带有 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);"+
    "}}}"
);

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

4

2 回答 2

0

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

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

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

于 2013-06-28T14:08:41.023 回答
0

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

adapter.clear();

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

adapter.notifyDataSetChanged();
于 2013-06-29T10:46:10.760 回答