向ArrayList添加元素时出错。我在mArrayList.add(oneToolkit);
收到错误,而在我的其他活动中,同样的方法工作正常。当我评论mArrayList.add(oneToolkit);
时,每件事情都很好。 Foolowing是我的AsyncTask代码和调用它的方法。
private void getToolkits(){
JSONObject jsonObject = JSONParser.getJsonObject(URL);
Log.d(Constants.TAG,"jsonObject: "+jsonObject.toString());
try {
JSONArray AllResults = jsonObject.getJSONArray("AppTrainee");
//Log.d(Constants.TAG,"External Training: "+ AllResults.toString() + " Length: "+ AllResults.length());
JSONObject newObject = AllResults.getJSONObject(0);
JSONArray newArray = newObject.getJSONArray("Training Toolkits");
Log.d(Constants.TAG, "Lenght: "+newArray.length());
for(int i=0;i<newArray.length();i++){
JSONObject oneResult = newArray.getJSONObject(i);
Log.d(Constants.TAG,"Name "+i+" : "+oneResult.getString("ToolkitName"));
Toolkit oneToolkit = new Toolkit();
oneToolkit.setToolkitID(Integer.parseInt(oneResult.getString("ToolkitID")));
oneToolkit.setToolkitName(oneResult.getString("ToolkitName"));
oneToolkit.setDisplayOrder(Integer.parseInt(oneResult.getString("DisplayOrder")));
oneToolkit.setButtonImage(oneResult.getString("Tk_ButtonImage"));
mArrayList.add(oneToolkit);
}
Log.d(Constants.TAG, "Done");
} catch (JSONException e) {
e.printStackTrace();
}
}
private void showToolkits(){
//mAdapter = new ToolkitsAdapter(getApplicationContext(), mArrayList);
//mGridView.setAdapter(mAdapter);
}
private class GetDataTask extends AsyncTask<String, Void, Void> {
private final ProgressDialog dialog = new ProgressDialog(ToolkitsActivity.this);
// can use UI thread here
protected void onPreExecute() {
this.dialog.setMessage("Loading...");
this.dialog.setCancelable(false);
this.dialog.show();
}
// automatically done on worker thread (separate from UI thread)
protected Void doInBackground(final String... args) {
getToolkits();
return null;
}
// can use UI thread here
protected void onPostExecute(final Void unused) {
if (this.dialog.isShowing()) {
this.dialog.dismiss();
showToolkits();
}
}
}
logcat的
03-07 22:25:27.758: W/dalvikvm(1041): threadid=9: thread exiting with uncaught exception (group=0x40015560)
03-07 22:25:27.788: E/AndroidRuntime(1041): FATAL EXCEPTION: AsyncTask #1
03-07 22:25:27.788: E/AndroidRuntime(1041): java.lang.RuntimeException: An error occured while executing doInBackground()
03-07 22:25:27.788: E/AndroidRuntime(1041): at android.os.AsyncTask$3.done(AsyncTask.java:200)
03-07 22:25:27.788: E/AndroidRuntime(1041): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:274)
03-07 22:25:27.788: E/AndroidRuntime(1041): at java.util.concurrent.FutureTask.setException(FutureTask.java:125)
03-07 22:25:27.788: E/AndroidRuntime(1041): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:308)
03-07 22:25:27.788: E/AndroidRuntime(1041): at java.util.concurrent.FutureTask.run(FutureTask.java:138)
03-07 22:25:27.788: E/AndroidRuntime(1041): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
03-07 22:25:27.788: E/AndroidRuntime(1041): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
03-07 22:25:27.788: E/AndroidRuntime(1041): at java.lang.Thread.run(Thread.java:1019)
03-07 22:25:27.788: E/AndroidRuntime(1041): Caused by: java.lang.NullPointerException
03-07 22:25:27.788: E/AndroidRuntime(1041): at uk.org.humanfocus.ToolkitsActivity.getToolkits(ToolkitsActivity.java:60)
03-07 22:25:27.788: E/AndroidRuntime(1041): at uk.org.humanfocus.ToolkitsActivity.access$0(ToolkitsActivity.java:43)
03-07 22:25:27.788: E/AndroidRuntime(1041): at uk.org.humanfocus.ToolkitsActivity$GetDataTask.doInBackground(ToolkitsActivity.java:87)
03-07 22:25:27.788: E/AndroidRuntime(1041): at uk.org.humanfocus.ToolkitsActivity$GetDataTask.doInBackground(ToolkitsActivity.java:1)
03-07 22:25:27.788: E/AndroidRuntime(1041): at android.os.AsyncTask$2.call(AsyncTask.java:185)
03-07 22:25:27.788: E/AndroidRuntime(1041): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
03-07 22:25:27.788: E/AndroidRuntime(1041): ... 4 more
03-07 22:25:30.008: E/WindowManager(1041): Activity uk.org.humanfocus.ToolkitsActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@4052f1a0 that was originally added here
03-07 22:25:30.008: E/WindowManager(1041): android.view.WindowLeaked: Activity uk.org.humanfocus.ToolkitsActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@4052f1a0 that was originally added here
03-07 22:25:30.008: E/WindowManager(1041): at android.view.ViewRoot.<init>(ViewRoot.java:258)
03-07 22:25:30.008: E/WindowManager(1041): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:148)
03-07 22:25:30.008: E/WindowManager(1041): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
03-07 22:25:30.008: E/WindowManager(1041): at android.view.Window$LocalWindowManager.addView(Window.java:424)
03-07 22:25:30.008: E/WindowManager(1041): at android.app.Dialog.show(Dialog.java:241)
03-07 22:25:30.008: E/WindowManager(1041): at uk.org.humanfocus.ToolkitsActivity$GetDataTask.onPreExecute(ToolkitsActivity.java:82)
03-07 22:25:30.008: E/WindowManager(1041): at android.os.AsyncTask.execute(AsyncTask.java:391)
03-07 22:25:30.008: E/WindowManager(1041): at uk.org.humanfocus.ToolkitsActivity.onCreate(ToolkitsActivity.java:39)
03-07 22:25:30.008: E/WindowManager(1041): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
03-07 22:25:30.008: E/WindowManager(1041): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
03-07 22:25:30.008: E/WindowManager(1041): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
03-07 22:25:30.008: E/WindowManager(1041): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
03-07 22:25:30.008: E/WindowManager(1041): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
03-07 22:25:30.008: E/WindowManager(1041): at android.os.Handler.dispatchMessage(Handler.java:99)
03-07 22:25:30.008: E/WindowManager(1041): at android.os.Looper.loop(Looper.java:123)
03-07 22:25:30.008: E/WindowManager(1041): at android.app.ActivityThread.main(ActivityThread.java:3683)
03-07 22:25:30.008: E/WindowManager(1041): at java.lang.reflect.Method.invokeNative(Native Method)
03-07 22:25:30.008: E/WindowManager(1041): at java.lang.reflect.Method.invoke(Method.java:507)
03-07 22:25:30.008: E/WindowManager(1041): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
03-07 22:25:30.008: E/WindowManager(1041): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
03-07 22:25:30.008: E/WindowManager(1041): at dalvik.system.NativeStart.main(Native Method)
答案 0 :(得分:2)
您的mArrayList为空。试着初始化它
List<Toolkit> mArrayList= new ArrayList<Toolkit>();
答案 1 :(得分:1)
这是此错误的原因。
Caused by: java.lang.NullPointerException 03-07 22:25:27.788:
可能缺少创建此mArrayList
调试你的代码,我认为你发现了错误。