【发布时间】:2014-01-20 13:04:59
【问题描述】:
这可能是一个简单的问题,但我就是想不通。考虑下面的代码:
private void getJSONData() {
AsyncHttpClient client = new AsyncHttpClient();
client.get("http://dev.vision-is.nl/klanten/so/content.json", new AsyncHttpResponseHandler() {
@Override
public void onSuccess(String response) {
// TODO Auto-generated method stub
try {
JSONArray jsonArray = new JSONArray(response);
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
String titleString = (String) jsonObject.get("title");
titleArray = new ArrayList<String>();
titleArray.add(titleString);
System.out.println(titleArray.get(0));
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void onFailure(Throwable arg0, String arg1) {
// TODO Auto-generated method stub
System.out.println(arg1);
}
});
}
这段代码有效并给了我输出:
01-20 13:11:48.076 31508-31508/com.soccer.soccerapp I/System.out﹕ OUTPUT: Barcelona - Real Madrid
01-20 13:11:48.076 31508-31508/com.soccer.soccerapp I/System.out﹕ OUTPUT: Ajax - Barcelona
01-20 13:11:48.077 31508-31508/com.soccer.soccerapp I/System.out﹕ OUTPUT: Manchester United - Chelsea
01-20 13:11:48.078 31508-31508/com.soccer.soccerapp I/System.out﹕ OUTPUT: Ajax - PSV
问题来了!当我尝试在“onCreate void”中检索数组时,应用程序将崩溃...
代码:
public class ActivitiesViewController extends Activity {
ArrayList<String> titleArray;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activitiesviewcontroller);
getJSONData();
System.out.println(titleArray.get(0));
}
}
代码有什么问题?我检索 json 数据。将此数据存储在一个数组中,当我尝试检索此数据时,应用程序将崩溃。
【问题讨论】:
-
什么是崩溃日志?
-
代码有什么问题? - 您错误地期望
AsyncHttpClient中的代码会立即运行,正好赶上该列表访问成功。这不会发生。 -
您的
System.out.println(titleArray.get(0));可能在AsyncHttpClient完成之前在getJSONData();方法内运行.. -
@Luksprog 我将数据存储在数组中,对吗?那为什么我不能找回呢? -.- 对不起,我只是 Android 开发的初学者,真的很想了解我做错了什么......
-
@Vision 您没有做错任何事情..但是您的 AsynClient 正在使用您的代码...请参阅我的解释答案
标签: android arrays json listview android-listview