我一直在尝试在 Android 中解析一些 JSON 数据,但遇到了问题。我的应用程序在启动活动后立即崩溃,似乎它正在抛出 NullPointerException,但我不知道出了什么问题。
编码:
MyFirstMethod myfirst;
private CardUI mCardView;
private String Url = "http://www.lgb.dk/test.json";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_display_track);
// Show the Up button in the action bar.
setupActionBar();
Intent intent = getIntent();
String trackNumber = intent.getStringExtra(MainActivity.TRACKNUMBER);
// init CardView
mCardView = (CardUI) findViewById(R.id.cardsview);
mCardView.setSwipeable(false);
myfirst.execute(Url);
// add one card
//mCardView.addCard(new MyCard("", "Some content!"));
// draw cards
mCardView.refresh();
}
public class MyFirstMethod extends AsyncTask<String, Void, String> {
ProgressDialog dialog;
@Override
protected void onPreExecute() {
super.onPreExecute();
dialog = new ProgressDialog(DisplayTrackActivity.this);
dialog.setMessage("Loading....");
dialog.show();
}
@Override
protected String doInBackground(String... urls) {
String url = urls[0];
StringBuilder builder = new StringBuilder();
HttpClient client = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(url);
try {
HttpResponse response = client.execute(httpGet);
StatusLine statusLine = response.getStatusLine();
int statusCode = statusLine.getStatusCode();
if (statusCode == 200) {
HttpEntity entity = response.getEntity();
InputStream content = entity.getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(content));
while ((reader.readLine()) != null) {
//builder.append(line);
}
} else {
Log.e(DisplayTrackActivity.class.toString(), "Failed to download file");
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
String result = builder.toString();
return result;
}
@Override
protected void onPostExecute(String result) {
try {
JSONArray jsonArray = new JSONArray(result);
Log.i(DisplayTrackActivity.class.getName(),
"Number of entries " + jsonArray.length());
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
mCardView.addCard(new MyCard(DisplayTrackActivity.class.getName(), jsonObject.getString("eventDescription")));
}
} catch (Exception e) {
e.printStackTrace();
}
super.onPostExecute(result);
dialog.dismiss();
dialog.cancel();
}
}
日志猫:
05-16 14:50:15.622: E/AndroidRuntime(29771): FATAL EXCEPTION: main
05-16 14:50:15.622: E/AndroidRuntime(29771): java.lang.RuntimeException: Unable to start activity ComponentInfo{dk.lgb.trackandtrace/dk.lgb.trackandtrace.DisplayTrackActivity}: java.lang.NullPointerException
05-16 14:50:15.622: E/AndroidRuntime(29771): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
05-16 14:50:15.622: E/AndroidRuntime(29771): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
05-16 14:50:15.622: E/AndroidRuntime(29771): at android.app.ActivityThread.access$600(ActivityThread.java:141)
05-16 14:50:15.622: E/AndroidRuntime(29771): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
05-16 14:50:15.622: E/AndroidRuntime(29771): at android.os.Handler.dispatchMessage(Handler.java:99)
05-16 14:50:15.622: E/AndroidRuntime(29771): at android.os.Looper.loop(Looper.java:137)
05-16 14:50:15.622: E/AndroidRuntime(29771): at android.app.ActivityThread.main(ActivityThread.java:5041)
05-16 14:50:15.622: E/AndroidRuntime(29771): at java.lang.reflect.Method.invokeNative(Native Method)
05-16 14:50:15.622: E/AndroidRuntime(29771): at java.lang.reflect.Method.invoke(Method.java:511)
05-16 14:50:15.622: E/AndroidRuntime(29771): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
05-16 14:50:15.622: E/AndroidRuntime(29771): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
05-16 14:50:15.622: E/AndroidRuntime(29771): at dalvik.system.NativeStart.main(Native Method)
05-16 14:50:15.622: E/AndroidRuntime(29771): Caused by: java.lang.NullPointerException
05-16 14:50:15.622: E/AndroidRuntime(29771): at dk.lgb.trackandtrace.DisplayTrackActivity.onCreate(DisplayTrackActivity.java:54)
05-16 14:50:15.622: E/AndroidRuntime(29771): at android.app.Activity.performCreate(Activity.java:5104)
05-16 14:50:15.622: E/AndroidRuntime(29771): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
05-16 14:50:15.622: E/AndroidRuntime(29771): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
05-16 14:50:15.622: E/AndroidRuntime(29771): ... 11 more