Ошибка затмения: невозможно создать экземпляр активности - PullRequest
0 голосов
/ 23 ноября 2011

Я пытался запустить свое приложение, но оно не работает до достижения метода 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

1 Ответ

2 голосов
/ 23 ноября 2011

Из того, что я могу сказать из logcat (код поможет сделать это еще яснее), вы написали что-то в конструкторе.

Это плохая практика, если вы точно не знаете, что делаете (но я думаю, что вы просто ошибка первого тайма;)). Вы должны сделать все, чтобы инициализировать ваше приложение в переопределенном методе onCreate. Старайтесь не создавать никаких конструкторов и перемещайте все в методе onCreate.

И помните, у действий нет основной функции, и вы не можете передавать им аргументы (есть специальные классы для передачи данных между действиями)

EDIT: теперь, когда я смотрю лучше на твоего logcat, я могу сказать тебе еще больше. Вы используете sharedPreferences в конструкторе, но когда вызывается конструктор, действие еще не существует, поэтому у него нет никакого remarenceManager. Вот почему вы получаете нулевой указатель. Как я уже сказал, перемещение всего в методе onCreate решит вашу проблему

...