2011-11-22 211 views
0

我试图运行我的应用程序,但它在到达onCreate()方法之前崩溃。我是新来的android和eclipse,所以我甚至不知道从哪里开始寻找错误。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 
+4

嗯...你在第51行的HelloActivity中有一个空指针异常,所以我建议看看那里。 – MrZander

+0

如果您仍然难以编辑您的问题以包含HelloActivity的代码。 – Krylez

+1

是的,那一行实际告诉你的是异常的行号:at com.example.app.HelloActivity。 (HelloActivity.java:51)表示第51行,某些内容为空。 – Jack

回答

2

从我可以从logcat的说(代码将有助于使这一更加清晰),你写在构造函数的东西。

这是不好的做法,除非你完全知道你在做什么(但我认为你只是第一次使用的错误;))。 你应该尽一切努力在重写的onCreate方法中初始化你的应用程序。 尽量不要创建任何构造函数,并在onCreate方法中移动所有内容。

记住,活动不具有的主要功能,你不能传递参数给他们(有special classes传递活动之间的数据)

编辑: 现在,我看看你的logcat的更好,我可以告诉你更多。 您在构造函数中使用sharedPreferences,但是当构造函数被调用时,活动尚不存在,因此它没有任何prederenceManager。这就是为什么你得到一个空指针。正如我所说的,在onCreate方法中移动所有东西将解决您的问题

+1

是的,这对于初学者来说非常普遍。他们需要阅读应用基础http://developer.android.com/guide/topics/fundamentals.html您不要实例化活动;你开始他们。因此,你不会为它们提供构造函数。 – LuxuryMode

相关问题