所以,我一直在关注Android天气应用程序的YouTube教程。该应用程序似乎编译,但无论何时在模拟器上打开崩溃。我不是最流利的程序员,但代码是理解的。我无法弄清楚造成这个问题的原因。该应用程序应该获取“MainActivity.java”中硬编码位置的位置的天气数据。数据来自Yahoo!使用API。
项目文件的链接:https://drive.google.com/drive/folders/0B2dQ9-JQjysVeXlqZENBZDExN0E?usp=sharing
以下是我得到的错误:
---------崩溃的开始 E / AndroidRuntime:致命异常:主要 处理:com.example.mattbenson.cw_2_weather,PID:2529 java.lang.NullPointerException:尝试在空对象引用上调用虚方法'int org.json.JSONObject.optInt(java.lang.String)' at com.example.mattbenson.cw_2_weather.service.WeatherService $ 1.onPostExecute(WeatherService.java:81) at com.example.mattbenson.cw_2_weather.service.WeatherService $ 1.onPostExecute(WeatherService.java:38) 在android.os.AsyncTask.finish(AsyncTask.java:667) 在android.os.AsyncTask.-wrap1(AsyncTask.java) 在android.os.AsyncTask $ InternalHandler.handleMessage(AsyncTask.java:684) 在android.os.Handler.dispatchMessage(Handler.java:102) 在android.os.Looper.loop(Looper.java:154) 在android.app.ActivityThread.main(ActivityThread.java:6119) at java.lang.reflect.Method.invoke(Native Method) 在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:886) 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) E / Surface:queueBuffer:错误排队缓冲区到SurfaceTexture,-19 E / EGL_emulation:tid 2570:swapBuffers(487):错误0x300d(EGL_BAD_SURFACE) W / OpenGLRenderer:swapBuffers在0x76990bb1c580上遇到EGL错误12301,暂停渲染... 申请已终止。
(对不起,我是这个网站的新手!)
非常感谢任何帮助。
答案 0 :(得分:0)
正如StackTrace所说,错误位于第81行WeatherService
的{{1}}类,因为它返回 NULL 。
尝试使用方法optInt with fallback值int count = queryResults.optInt("Count");