2012-12-12 107 views
0

我想在android中使用AsyncTask連接到mysql,但我有併發症。我使用的接口從AsyncTask返回數據,但是當我運行代碼時,出現以下錯誤:異常RuntimeException。非常感謝大家。AsyncTask異常RuntimeException

+1

請張貼請問,如果你註釋掉'錯誤時發生完整的異常消息和堆棧跟蹤 –

+0

// listener.onTaskCompleted(listaNegocios);'在'onPostExecute'? – jamis0n

+0

由於我檢查了日誌,問題出現在解析中,只是在int lat =(Integer.parseInt(緯度)* 1000000),但我不知道如何解決它 – Squall

回答

1

添加一般例外塊到您的JSON解析try/catch語句,並張貼在所捕獲的錯誤:

//parse json data 
try{ 
    JSONArray jarray = new JSONArray(result); 
     for(int i=0 ; i<jarray.length() ; i++) { 
     JSONObject ob = jarray.getJSONObject(i); 
     String titulo = ob.getString("title"); 
     String cate = ob.getString("catid"); 
     int cat = Integer.parseInt(cate); 
     String coord = ob.getString("extra_fields_search"); 

     String latitud = coord.substring(0, 9); 
     Float lat_f = Float.parseFloat(latitud); 
     int lat = lat_f *1000000; 

     String longitud = coord.substring(10, 19); 
     Float lon_f = Float.parseFloat(longitud); 
     int lon = lon_f*1000000; 

     GeoPoint point = new GeoPoint(lat, lon); 
     negocioNuevo = new Negocio(titulo, cat, point); 
     listaNegocios.add(negocioNuevo); 
     } 
}catch(JSONException e){ 
    Log.e("miError de JSON", "Error parsing JSON "+e.toString()); 
}catch(Exception e){ 
    Log.e("miError de General", "Error parsing data "+e.toString()); 
} 
+0

我得到這個錯誤:E/MyError一般(1205):錯誤解析數據java.lang.NumberFormatException:無效int:「37.770783」。除了以這種方式運行並且不會離開RuntimeException,但程序不能正常工作。 – Squall

+0

顯然你的字符串有一個小數,所以嘗試parseFloat(),因爲我更新上面。乘以1000000應該允許您將其存儲爲int – jamis0n

+0

parseFloat()不起作用。當我乘以1000000時,我不知道爲什麼不工作。我好嗎? – Squall

0

在連接類嘗試更換

public Conexion(OnTaskCompleted listener){ 
    this.listener=listener; 
} 

public void setOnResultsListener(OnTaskCompleted listener) { 
     this.listener = listener; 
    } 

,然後在MainActivity取代:

Conexion conexion = new Conexion(this); 
conexion.execute("tipo"); 

有:

Conexion conexion = new Conexion(); 
conexion.setOnResultsListener(this); 
conexion.execute("tipo"); 
+0

我試過了,但它不起作用,有更多想法嗎? – Squall