我尝试运行我的应用程序,但在到达onCreate()方法之前崩溃了。我是android和eclipse的新手,所以我甚至不知道从哪里开始搜索错误。
这是错误消息表格LogCat:
11-22 21:06:59.787: WARN/dalvikvm(433): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
11-22 21:07:01.468: ERROR/AndroidRuntime(433): FATAL EXCEPTION: main
11-22 21:07:01.468: ERROR/AndroidRuntime(433): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.app/com.example.app.HelloActivity}: java.lang.NullPointerException
11-22 21:07:01.468: ERROR/AndroidRuntime(433): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2585)
11-22 21:07:01.468: ERROR/AndroidRuntime(433): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
11-22 21:07:01.468: ERROR/AndroidRuntime(433): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
11-22 21:07:01.468: ERROR/AndroidRuntime(433): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
11-22 21:07:01.468: ERROR/AndroidRuntime(433): at android.os.Handler.dispatchMessage(Handler.java:99)
11-22 21:07:01.468: ERROR/AndroidRuntime(433): at android.os.Looper.loop(Looper.java:123)
11-22 21:07:01.468: ERROR/AndroidRuntime(433): at android.app.ActivityThread.main(ActivityThread.java:4627)
11-22 21:07:01.468: ERROR/AndroidRuntime(433): at java.lang.reflect.Method.invokeNative(Native Method)
11-22 21:07:01.468: ERROR/AndroidRuntime(433): at java.lang.reflect.Method.invoke(Method.java:521)
11-22 21:07:01.468: ERROR/AndroidRuntime(433): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
11-22 21:07:01.468: ERROR/AndroidRuntime(433): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
11-22 21:07:01.468: ERROR/AndroidRuntime(433): at dalvik.system.NativeStart.main(Native Method)
11-22 21:07:01.468: ERROR/AndroidRuntime(433): Caused by: java.lang.NullPointerException
11-22 21:07:01.468: ERROR/AndroidRuntime(433): at android.content.ContextWrapper.getSharedPreferences(ContextWrapper.java:146)
11-22 21:07:01.468: ERROR/AndroidRuntime(433): at com.example.app.HelloActivity.<init>(HelloActivity.java:51)
11-22 21:07:01.468: ERROR/AndroidRuntime(433): at java.lang.Class.newInstanceImpl(Native Method)
11-22 21:07:01.468: ERROR/AndroidRuntime(433): at java.lang.Class.newInstance(Class.java:1429)
11-22 21:07:01.468: ERROR/AndroidRuntime(433): at android.app.Instrumentation.newActivity(Instrumentation.java:1021)
11-22 21:07:01.468: ERROR/AndroidRuntime(433): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2577)
11-22 21:07:01.468: ERROR/AndroidRuntime(433): ... 11 more
答案 0 :(得分:2)
从logcat中我可以说(代码有助于使这更加清晰),你在构造函数中写了一些东西。
这是不好的做法,除非你确切地知道你在做什么(但我认为你的只是第一次定时错误;))。 您应该在重写的onCreate方法中执行所有操作来初始化您的应用。 尽量不要创建任何构造函数,并在onCreate方法中移动所有内容。
请记住,活动没有主要功能,你不能传递参数(有special classes在活动之间传递数据)
编辑: 现在我看起来更好看你的logcat,我可以告诉你更多。 您正在构造函数中使用sharedPreferences,但是当调用构造函数时,该活动尚不存在,因此它没有任何prederenceManager。这就是你得到一个空指针的原因。正如我所说,移动onCreate方法中的所有内容将解决您的问题