J'ai essayé d'analyser certaines données JSON dans Android, mais je rencontre un problème. Mon application se bloque dès que je lance l'activité, il semble qu'elle lance une exception NullPointerException, mais je n'ai aucune idée de ce qui ne va pas.AsyncTask bloque l'application immédiatement
Le code:
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();
}
}
Logcat:
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
Merci! Je suis nouveau sur le développement Android, cela aide beaucoup. – Lazze