2013-06-28 73 views
0

我有一個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

回答

0

我認爲你需要再次使用loadDataWithBaseURL而不只是loadUrl

請參閱this鏈接。有一段介紹loadData,上面寫着:

需要注意的是JavaScript的同源策略是指在使用此方法加載的網頁運行該腳本將無法訪問內容使用比「數據」以外的任何方式加載,包括「 HTTP(S)」。爲了避免這種限制,請使用loadDataWithBaseURL()和適當的基本URL。

+0

我不能那樣做。現有的動態數據被替換爲javascript – raghavendra

0

FINALLY!固定它..適配器拿着先前下載的圖像,以及第二次點擊時下載的圖像,我不明白爲什麼該應用程序關閉而不給予任何內存泄漏以及..反正它使用

後現在工作正常
adapter.clear(); 

或全部的圖像大拇指下載(我不知道這是非常有效的)後重新初始化適配器爲null。在適配器被清除後,使用

adapter.notifyDataSetChanged(); 
+0

我的下一個任務是實現圖像的縮放縮放。在GridView中顯示圖像縮略圖後,我在下一個活動中顯示一個更大的圖像。我用ImageSwitcher和ImageView來完成Fling手勢來加載下一張圖片。 我不明白如何在當前情況下縮放圖像。 有什麼建議? 請幫忙... – raghavendra

相關問題