
在ArrayList中获取NullPointerException.我正在使用下面的行记录ArrayList的大小,但是我总是得到NPE.
可能是什么原因?
Log.d("catArrayList:Size:New", ""+categoryArrayList.size());这是更多代码:
protected voID onPostExecute(Boolean result) { dialog.cancel(); Log.d("catArrayList:Size", ""+categoryArrayList.size()); Log.d("typArrayList:Size", ""+typeArrayList.size()); Log.d("serArrayList:Size", ""+serviceArrayList.size()); Log.d("cArrayList:Size", ""+cArrayList.size()); Log.d("tArrayList:Size", ""+tArrayList.size()); Log.d("sArrayList:Size", ""+sArrayList.size()); category c = categoryArrayList.get(0); typeArrayList = c.getTypeArrayList(); Log.d("catArrayList:Size:New", ""+categoryArrayList.size()); for(int i=0;i<typeArrayList.size();i++) { tArrayList.add(typeArrayList.get(i).getname()); } spinner1.setAdapter(new ArrayAdapter<String>(categoryActivity.this, androID.R.layout.simple_spinner_dropdown_item, cArrayList)); spinner2.setAdapter(new ArrayAdapter<String>(categoryActivity.this, androID.R.layout.simple_spinner_dropdown_item, tArrayList)); spinner3.setAdapter(new ArrayAdapter<String>(categoryActivity.this, androID.R.layout.simple_spinner_dropdown_item, sArrayList)); }日志说:
09-12 11:05:54.585: D/catArrayList:Size(30919): 209-12 11:05:54.585: D/typArrayList:Size(30919): 209-12 11:05:54.585: D/serArrayList:Size(30919): 209-12 11:05:54.585: D/cArrayList:Size(30919): 209-12 11:05:54.590: D/tArrayList:Size(30919): 209-12 11:05:54.590: D/sArrayList:Size(30919): 209-12 11:05:54.590: D/AndroIDRuntime(30919): Shutting down VM09-12 11:05:54.590: W/dalvikvm(30919): threadID=1: thread exiting with uncaught exception (group=0x40f9f2a0)09-12 11:05:54.590: E/AndroIDRuntime(30919): FATAL EXCEPTION: main09-12 11:05:54.590: E/AndroIDRuntime(30919): java.lang.NullPointerException09-12 11:05:54.590: E/AndroIDRuntime(30919): at com.example.modulewise.categoryActivity$JsONAsyncTask.onPostExecute(categoryActivity.java:178)09-12 11:05:54.590: E/AndroIDRuntime(30919): at com.example.modulewise.categoryActivity$JsONAsyncTask.onPostExecute(categoryActivity.java:1)09-12 11:05:54.590: E/AndroIDRuntime(30919): at androID.os.AsyncTask.finish(AsyncTask.java:631)09-12 11:05:54.590: E/AndroIDRuntime(30919): at androID.os.AsyncTask.access0(AsyncTask.java:177)09-12 11:05:54.590: E/AndroIDRuntime(30919): at androID.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)09-12 11:05:54.590: E/AndroIDRuntime(30919): at androID.os.Handler.dispatchMessage(Handler.java:99)09-12 11:05:54.590: E/AndroIDRuntime(30919): at androID.os.Looper.loop(Looper.java:137)09-12 11:05:54.590: E/AndroIDRuntime(30919): at androID.app.ActivityThread.main(ActivityThread.java:4921)09-12 11:05:54.590: E/AndroIDRuntime(30919): at java.lang.reflect.Method.invokeNative(Native Method)09-12 11:05:54.590: E/AndroIDRuntime(30919): at java.lang.reflect.Method.invoke(Method.java:511)09-12 11:05:54.590: E/AndroIDRuntime(30919): at com.androID.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1036)09-12 11:05:54.590: E/AndroIDRuntime(30919): at com.androID.internal.os.ZygoteInit.main(ZygoteInit.java:803)09-12 11:05:54.590: E/AndroIDRuntime(30919): at dalvik.system.NativeStart.main(Native Method)解决方法:
如果在该行上引发了NPE:
Log.d("catArrayList:Size:New", ""+categoryArrayList.size());那么它被抛出的原因是categoryArrayList为null.
检查该变量是否已正确初始化.
我也强烈怀疑您正在运行的代码与问题中向我们显示的代码不同.根据我的阅读,那时categoryArrayList不可能为null.如果是这样的话,那么NPE之前将在以下位置抛出两行:
category c = categoryArrayList.get(0);实际上,如果应用程序是多线程的,并且另一个线程与此运行此方法的线程并行地更新categoryArrayList,则由于竞争条件,该变量可能变为null.但是,我希望这只会偶尔发生.
我猜,另一种可能性是c.getTypeArrayList()调用正在更新categoryArrayList作为副作用.
第三种可能性是,NPE不会出现在您所说的那条线上.
总结以上是内存溢出为你收集整理的java-onPostExecute()中的ArrayList空指针异常全部内容,希望文章能够帮你解决java-onPostExecute()中的ArrayList空指针异常所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)