【发布时间】:2015-01-02 03:16:56
【问题描述】:
我一直在学习 udacity 课程,并且几乎完成了第 2 课。程序应该使用JSON 上现在解析的数据更新列表视图。除非添加以下代码,否则程序会崩溃:
@Override
protected void onPostExecute(String[] result) {
if (result != null) {
forecastAdapter.clear();
for (String dayForecastStr : result) {
forecastAdapter.add(dayForecastStr);
}
}
}
如果该代码不存在,则程序照常运行并记录 json 解析的结果。其他人建议
“确保不要在“onCreateView”中重新定义 mForecastAdapter 并且只有:mForecastAdapter = new ArrayAdapter"
我不确定如何在这之前进行。我的班主任已经有mForecastAdapter = new ArrayAdapter<string>。 oncreateview 上的其余代码只是将数组加载到列表视图中。
我目前的错误日志是:
11-05 19:29:00.049 20310-20553/com.example.jeremy.sunshine V/FetchWeatherTask﹕预测条目:11 月 5 日星期三 - 清除 - 7/7 11-05 19:29:00.049 20310-20553/com.example.jeremy.sunshine V/FetchWeatherTask﹕预测条目:11 月 6 日星期四 - 下雨 - 12/9 11-05 19:29:00.049 20310-20553/com.example.jeremy.sunshine V/FetchWeatherTask﹕预测条目:11 月 7 日星期五 - 雨 - 12/10 11-05 19:29:00.049 20310-20553/com.example.jeremy.sunshine V/FetchWeatherTask﹕预测条目:星期六,11 月 8 日 - 下雨 - 11 年 12 月 11-05 19:29:00.049 20310-20553/com.example.jeremy.sunshine V/FetchWeatherTask﹕预测条目:11 月 9 日星期日 - 雨 - 15/11 11-05 19:29:00.049 20310-20553/com.example.jeremy.sunshine V/FetchWeatherTask﹕预测条目:Mon, Nov 10 - Clear - 15/12 11-05 19:29:00.049 20310-20553/com.example.jeremy.sunshine V/FetchWeatherTask﹕预测条目:Tue, Nov 11 - Clear - 15/11 11-05 19:29:00.049 20310-20310/com.example.jeremy.sunshine D/AndroidRuntime: 关闭虚拟机 11-05 19:29:00.049 20310-20310/com.example.jeremy.sunshine W/dalvikvm: threadid=1: 线程以未捕获的异常退出 (组=0x415c5db8)11-05 19:29:00.049 20310-20310/com.example.jeremy.sunshine E/AndroidRuntime:致命 例外:主要 进程:com.example.jeremy.sunshine,PID:20310 java.lang.NullPointerException 在 com.example.jeremy.sunshine.ForecastFragment$FetchWeatherTask.onPostExecute(ForecastFragment.java:305) 在 com.example.jeremy.sunshine.ForecastFragment$FetchWeatherTask.onPostExecute(ForecastFragment.java:108) 在 android.os.AsyncTask.finish(AsyncTask.java:632) 在 android.os.AsyncTask.access$600(AsyncTask.java:177) 在 android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:136) 在 android.app.ActivityThread.main(ActivityThread.java:5146) 在 java.lang.reflect.Method.invokeNative(Native Method) 在 java.lang.reflect.Method.invoke(Method.java:515) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:796) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:612) 在 dalvik.system.NativeStart.main(Native Method)
我的整个班级都可以在这里看到:
由于这是我的第一个 android 项目,我很困惑为什么这不起作用。我想这是我必须忽略的东西。http://pastebin.com/x3rcqbdS
【问题讨论】:
-
后执行正在检查空指针已经不够了吗?
-
您检查
result是否为空。意思是forecastAdapter是空的,我猜。