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

问题描述:

我有一个web页面,它是从服务器下载的HTML网页,我填充动态数据并向这个网页添加信息行。我用下面的代码在该网页上启用javascript:Android应用程序关闭时没有任何错误-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);"+ 
    "}}}" 
); 

当我点击任何行,我CAL的意图,从依赖于该行数据的服务器下载图像。它在第一次点击时工作正常,但是第二次点击时,应用程序关闭时没有任何错误。我不明白原因。请帮忙。在此先感谢

+2

“没有任何错误”意味着即使在'LogCat'中你没有线索? – g00dy

+0

要让Logcat中的JS消息(错误和类似)覆盖''''Chart.NETChromeClient#onConsoleMessage''''消息并将每条消息打印到LogCat。请注意,API是在FROYO中引入的,因此如果您正在运行sub v2.2 – OceanLife

+0

@OceanLife:yes!logcat中也没有错误消息。我重写了WebChromeClient的onConsoleMessage。实际上它可以在模拟器上顺利运行100次点击。这prblm只面临机器人设备 – raghavendra

我认为你需要再次使用loadDataWithBaseURL而不只是loadUrl

请参阅this链接。有一段介绍loadData,上面写着:

需要注意的是JavaScript的同源策略是指在使用此方法加载的网页运行该脚本将无法访问内容使用比“数据”以外的任何方式加载,包括“ HTTP(S)”。为了避免这种限制,请使用loadDataWithBaseURL()和适当的基本URL。

+0

我不能那样做。现有的动态数据被替换为javascript – raghavendra

FINALLY!固定它..适配器拿着先前下载的图像,以及第二次点击时下载的图像,我不明白为什么该应用程序关闭而不给予任何内存泄漏以及..反正它使用

后现在工作正常
adapter.clear(); 

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

adapter.notifyDataSetChanged(); 
+0

我的下一个任务是实现图像的缩放缩放。在GridView中显示图像缩略图后,我在下一个活动中显示一个更大的图像。我用ImageSwitcher和ImageView来完成Fling手势来加载下一张图片。 我不明白如何在当前情况下缩放图像。 有什么建议? 请帮忙... – raghavendra