已更新的問題來自上一個:我通過HashMap填充數組,Iam使用Asynctask進行http請求&填充數組後將該數組放入對話框中。當我第一次運行我的應用程序,它給了我一個空的對話框&沒有給出任何錯誤,但是當我重新運行我的應用程序時,它完美地顯示了對話框中的所有數組元素。什麼原因 ?ArrayExceptionOut Of Bound
//JsonResponse Inner Class in main class
private class JsonResponse extends AsyncTask<String, Void, String>
{
String response = "";
private ArrayList<HashMap<String, String>> prServices_resultList =
new ArrayList<HashMap<String, String>>();
protected void onPostExecute(String result)
{
if(response.equalsIgnoreCase("Success"))
{
ResultList_List = prServices_resultList;
int s=0;
for (HashMap<String, String> hashServices : prServices_resultList)
{
Db_Services[s] = hashServices.get(android_S_CName);
Db_ServicesID[s] = hashServices.get(android_S_ID);
s++;
}
}
}
protected String doInBackground(final String... args)
{
JSONParser jParser = new JSONParser();
JSONArray jArrayServices = jParser.getJSONFromUrl(url_Services);
try
{
for (int i = 0; i < jArrayServices.length(); i++)
{
JSONObject jsonElements = jArrayServices.getJSONObject(i);
String S_id = jsonElements.getString(android_S_ID);
String S_name = jsonElements.getString(android_S_NAME);
HashMap<String, String> hashServices = new HashMap<String, String>();
// adding each child node to HashMap key
hashServices.put(android_S_ID, S_id);
hashServices.put(android_S_NAME, S_name);
// adding HashList to ArrayList
prServices_resultList.add(hashServices);
}
response = "Success";
}
catch(JSONException e)
{
e.printStackTrace();
}
return response;
}
}
在我的主要類有有一個按鈕&當我按下我執行的AsyncTask:
new JsonResponse().execute;
在上面的onCreate主類我聲明,如:
static ArrayList<HashMap<String, String>> ResultList_Services =
new ArrayList<HashMap<String, String>>();
String[] Db_Services = new String[ResultList_Services.size()];
String[] Db_ServicesID = new String[ResultList_Services.size()];
您可以指向引發異常的確切行嗎? – JRomero
你確定在第一次運行中你等待AsyncTask完成它的工作嗎?可能在第二輪中,數據已準備就緒。 –
@ J.Romero問題是我的數組在主要活動的頂部並等於arraylist.size ..我想在Asynctask中使用這些數組來獲得http響應的填充..我把它們放在主要活動中的原因是因爲我想在主要活動的其他方法中使用它們.. – AndroidLover