2013-03-13 52 views
-3

将元素添加到ArrayList时出错。我在mArrayList.add(oneToolkit);上遇到错误,而在其他活动中,同样的方法工作正常。当我评论mArrayList.add(oneToolkit);每一件事情都很好。愚蠢是我的AsyncTask代码和在那里调用的方法。ArrayList添加项目。我的代码有什么错误?

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 [email protected] 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 [email protected] 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

u有NullPointerException异常在mArrayList – Youddh 2013-03-13 06:43:02

+0

的AsyncTask的后完整的代码,以获得更多的帮助 – 2013-03-13 06:43:05

回答

1

这是此错误的原因。

Caused by: java.lang.NullPointerException 03-07 22:25:27.788: 

这可能会丢失创建这个mArrayList

调试的目标代码,我想你发现了错误。

+0

我失踪了对象的创建。谢谢.. – 2013-03-13 06:50:02

2

您的mArrayList为空。只要尝试对其进行初始化

List<Toolkit> mArrayList= new ArrayList<Toolkit>(); 
+0

谢谢。为我工作。 – 2013-03-13 06:51:54

+0

@AhmedNawaz不客气。请帮助你接受答案并投票。谢谢 – 2013-03-13 06:53:25