【问题标题】:EmPubLite Tutorial 12-crashesEmPubLite 教程 12 次崩溃
【发布时间】:2026-01-05 22:50:01
【问题描述】:

我一直在阅读 Busy Coders Guide 5.1 版的教程 12。

当我运行模拟器时,应用程序在启动过程中不断崩溃。我不清楚在我的 logcat 文件中查找什么。你能帮我理解我需要寻找什么吗?谢谢。

我搜索并没有看到有关教程 12 的任何其他帖子。如果有,请指出正确的方向。谢谢。

  10-01 16:01:11.921: D/dalvikvm(1397): GC_FOR_ALLOC freed 103K, 8%
 free 2808K/3028K, paused 37ms, total 39ms 10-01 16:01:11.921:
 I/dalvikvm-heap(1397): Grow heap (frag case) to 3.460MB for
 635812-byte allocation 10-01 16:01:12.041: D/dalvikvm(1397):
 GC_FOR_ALLOC freed 3K, 7% free 3426K/3652K, paused 114ms, total 114ms
 10-01 16:01:12.291: D/gralloc_goldfish(1397): Emulator without GPU
 emulation detected. 10-01 16:01:12.491: D/AndroidRuntime(1397):
 Shutting down VM 10-01 16:01:12.511: W/dalvikvm(1397): threadid=1:
 thread exiting with uncaught exception (group=0x41465700) 10-01
 16:01:12.581: E/AndroidRuntime(1397): FATAL EXCEPTION: main 10-01
 16:01:12.581: E/AndroidRuntime(1397): java.lang.NullPointerException
 10-01 16:01:12.581: E/AndroidRuntime(1397):    at
 com.commonsware.empublite.BookContents.getChapterCount(BookContents.java:16)
 10-01 16:01:12.581: E/AndroidRuntime(1397):    at
 com.commonsware.empublite.ContentsAdapter.getCount(ContentsAdapter.java:26)
 10-01 16:01:12.581: E/AndroidRuntime(1397):    at
 android.support.v4.view.ViewPager.setAdapter(ViewPager.java:434) 10-01
 16:01:12.581: E/AndroidRuntime(1397):  at
 com.commonsware.empublite.EmPubLiteActivity.setupPager(EmPubLiteActivity.java:70)
 10-01 16:01:12.581: E/AndroidRuntime(1397):    at
 com.commonsware.empublite.ModelFragment.deliverModel(ModelFragment.java:29)
 10-01 16:01:12.581: E/AndroidRuntime(1397):    at
 com.commonsware.empublite.ModelFragment.access$2(ModelFragment.java:27)
 10-01 16:01:12.581: E/AndroidRuntime(1397):    at
 com.commonsware.empublite.ModelFragment$ContentsLoadTask.onPostExecute(ModelFragment.java:82)
 10-01 16:01:12.581: E/AndroidRuntime(1397):    at
 com.commonsware.empublite.ModelFragment$ContentsLoadTask.onPostExecute(ModelFragment.java:1)
 10-01 16:01:12.581: E/AndroidRuntime(1397):    at
 android.os.AsyncTask.finish(AsyncTask.java:631) 10-01 16:01:12.581:
 E/AndroidRuntime(1397):    at
 android.os.AsyncTask.access$600(AsyncTask.java:177) 10-01
 16:01:12.581: E/AndroidRuntime(1397):  at
 android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
 10-01 16:01:12.581: E/AndroidRuntime(1397):    at
 android.os.Handler.dispatchMessage(Handler.java:99) 10-01
 16:01:12.581: E/AndroidRuntime(1397):  at
 android.os.Looper.loop(Looper.java:137) 10-01 16:01:12.581:
 E/AndroidRuntime(1397):    at
 android.app.ActivityThread.main(ActivityThread.java:5103) 10-01
 16:01:12.581: E/AndroidRuntime(1397):  at
 java.lang.reflect.Method.invokeNative(Native Method) 10-01
 16:01:12.581: E/AndroidRuntime(1397):  at
 java.lang.reflect.Method.invoke(Method.java:525) 10-01 16:01:12.581:
 E/AndroidRuntime(1397):    at
 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
 10-01 16:01:12.581: E/AndroidRuntime(1397):    at
 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 10-01
 16:01:12.581: E/AndroidRuntime(1397):  at
 dalvik.system.NativeStart.main(Native Method)

【问题讨论】:

    标签: android commonsware


    【解决方案1】:

    我不清楚要在我的 logcat 文件中查找什么

    那将是您崩溃的异常和行:

    10-01 16:01:12.581: E/AndroidRuntime(1397): FATAL EXCEPTION: main
    10-01 16:01:12.581: E/AndroidRuntime(1397): java.lang.NullPointerException
    10-01 16:01:12.581: E/AndroidRuntime(1397): at com.commonsware.empublite.BookContents.getChapterCount(BookContents.java:16) 
    

    因此,您在 BookContents.java 的第 16 行,在 BookContents 类的 getChapterCount() 方法中崩溃。

    该方法应如下所示:

      int getChapterCount() {
        return(chapters.length());
      }
    

    这表明:

    1. 您在构造函数中缺少chapters=raw.optJSONArray("chapters"); 行,或者

    2. 您的 JSON 缺少 chapters 数组

    Here is a working implementation of Tutorial 12,包括the BookContents class

    【讨论】:

    • 我明白了,谢谢。我有 chapter=raw.optJSONArray("Chapters");而不是“章节”。非常感谢您的帮助。
    最近更新 更多