让Async正常工作我遇到了一些麻烦。我让我的doInBackground传递一个JSON响应字符串,我的onPostExecute将解析然后发送到视图,但我一直得到我的onPostExecute的空指针。我知道它得到了正确的回复,因为我的Log打印了我期望的JSON字符串。
我没有正确传递信息吗?
这是我的堆栈跟踪:
07-07 13:26:33.757: ERROR/AndroidRuntime(5714): FATAL EXCEPTION: main
java.lang.NullPointerException
at com.dsgunter.randompokemongenerator.Generator$LoadPokemon.onPostExecute(Generator.java:153)
at com.dsgunter.randompokemongenerator.Generator$LoadPokemon.onPostExecute(Generator.java:113)
at android.os.AsyncTask.finish(AsyncTask.java:631)
at android.os.AsyncTask.access$600(AsyncTask.java:177)
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5021)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556)
at dalvik.system.NativeStart.main(Native Method)
和我的代码,为了简洁起见,我将在一个要点中发布:
答案 0 :(得分:0)
问题发生在progressDialog.dismiss()
。 progressDialog
变量为null。你在上面的onPreExecute方法上创建了一个pDialog
本地,这是我认为你真的想要解雇的。
答案 1 :(得分:0)
您的progressDialog
变量看起来永远不会被初始化,因此它是null
。而这一行
progressDialog.dismiss();
然后因此而抛出NPE。
答案 2 :(得分:0)
您永远不会初始化progressDialog
,因此它是null
。我想你想要忽略在onPreExecute
中创建的对话框,所以添加这一行:
progressDialog = pDialog;