【问题标题】:Android Application Crashes in EmulatorAndroid 应用程序在模拟器中崩溃
【发布时间】:2013-09-26 18:10:50
【问题描述】:

我的 Android 应用程序在模拟器中崩溃,并在日志中输出以下内容:

09-26 14:04:02.123: D/dalvikvm(716): GC_FOR_ALLOC freed 66K, 6% free 2675K/2844K, paused 29ms, total 30ms
09-26 14:04:02.123: I/dalvikvm-heap(716): Grow heap (frag case) to 3.455MB for 782224-byte allocation
09-26 14:04:02.173: D/dalvikvm(716): GC_FOR_ALLOC freed 2K, 5% free 3437K/3608K, paused 42ms, total 42ms
09-26 14:04:02.303: D/dalvikvm(716): GC_FOR_ALLOC freed <1K, 5% free 3436K/3608K, paused 38ms, total 39ms
09-26 14:04:02.314: I/dalvikvm-heap(716): Grow heap (frag case) to 4.778MB for 1389712-byte allocation
09-26 14:04:02.363: D/dalvikvm(716): GC_FOR_ALLOC freed <1K, 4% free 4793K/4968K, paused 52ms, total 52ms
09-26 14:04:02.423: D/AndroidRuntime(716): Shutting down VM
09-26 14:04:02.423: W/dalvikvm(716): threadid=1: thread exiting with uncaught exception (group=0x414c4700)
09-26 14:04:02.433: E/AndroidRuntime(716): FATAL EXCEPTION: main
09-26 14:04:02.433: E/AndroidRuntime(716): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.sample_proj/com.example.sample_proj.MainActivity}: java.lang.NullPointerException
09-26 14:04:02.433: E/AndroidRuntime(716):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
09-26 14:04:02.433: E/AndroidRuntime(716):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
09-26 14:04:02.433: E/AndroidRuntime(716):  at android.app.ActivityThread.access$600(ActivityThread.java:141)
09-26 14:04:02.433: E/AndroidRuntime(716):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
09-26 14:04:02.433: E/AndroidRuntime(716):  at android.os.Handler.dispatchMessage(Handler.java:99)
09-26 14:04:02.433: E/AndroidRuntime(716):  at android.os.Looper.loop(Looper.java:137)
09-26 14:04:02.433: E/AndroidRuntime(716):  at android.app.ActivityThread.main(ActivityThread.java:5103)
09-26 14:04:02.433: E/AndroidRuntime(716):  at java.lang.reflect.Method.invokeNative(Native Method)
09-26 14:04:02.433: E/AndroidRuntime(716):  at java.lang.reflect.Method.invoke(Method.java:525)
09-26 14:04:02.433: E/AndroidRuntime(716):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
09-26 14:04:02.433: E/AndroidRuntime(716):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
09-26 14:04:02.433: E/AndroidRuntime(716):  at dalvik.system.NativeStart.main(Native Method)
09-26 14:04:02.433: E/AndroidRuntime(716): Caused by: java.lang.NullPointerException
09-26 14:04:02.433: E/AndroidRuntime(716):  at com.example.sample_proj.MainActivity.onCreate(MainActivity.java:21)
09-26 14:04:02.433: E/AndroidRuntime(716):  at android.app.Activity.performCreate(Activity.java:5133)
09-26 14:04:02.433: E/AndroidRuntime(716):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
09-26 14:04:02.433: E/AndroidRuntime(716):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
09-26 14:04:02.433: E/AndroidRuntime(716):  ... 11 more

有人可以帮我理解为什么会抛出NullPointerException 以及如何解决它吗?

【问题讨论】:

  • 请贴一些代码。单独使用 Logcat 无济于事。
  • 你的MainActivity的代码在哪里?
  • 在此处发布您的 MainActivity.java 代码。
  • See this answerthis answer 关于如何阅读你的 logcat。很可能您没有正确初始化View,就像在调用setContentView()之前尝试初始化一样

标签: android eclipse


【解决方案1】:

在你的 MainActivity 中检查这一行

MainActivity.java:21

【讨论】:

    【解决方案2】:

    您可能使用过 findviewbyid 并且发生以下情况

    1. 你忘了把“setContentView”行或者放在findviewbyid之后
    2. 或者你把 contentView 放到了错误的布局中
    3. 1 和 2 不是,而且您确实 findviewbyid 到了给定布局中不存在的 id - 并试图向后使用该对象,因为 id 不正确,对象返回 null,您正在尝试使用它

    【讨论】:

    • 请注意,NullPointerExceptions 可能有很多原因,但这是 Android 开发中最常见的原因之一。
    • 因为他没有提供代码——而且他的项目被称为“样本”,我猜他是初学者,这些是我在初学者时获得 NPE 时最常犯的错误
    • 我知道,我只是为了完整起见添加了它
    猜你喜欢
    • 2012-09-13
    • 1970-01-01
    • 2022-01-06
    • 2019-07-06
    • 2015-11-14
    • 2011-03-20
    • 2013-11-18
    • 1970-01-01
    相关资源
    最近更新 更多