Приложение Android вылетает при открытии - PullRequest
0 голосов
/ 22 февраля 2012

Я занимаюсь разработкой приложения для Android, и как только AVD открывается, я разблокирую устройство и нажимаю на меню, я получаю сообщение об ошибке «Приложение неожиданно останавливается». Вот мой журнал logcat.

02-22 11:34:38.220: D/AndroidRuntime(336): Shutting down VM
02-22 11:34:38.220: W/dalvikvm(336): threadid=1: thread exiting with uncaught exception (group=0x40015560)
02-22 11:34:38.290: E/AndroidRuntime(336): FATAL EXCEPTION: main
02-22 11:34:38.290: E/AndroidRuntime(336): java.lang.RuntimeException: Unable to instantiate application com.compliment.ComplimentGenerator: java.lang.ClassCastException: com.compliment.ComplimentGenerator
02-22 11:34:38.290: E/AndroidRuntime(336):  at android.app.LoadedApk.makeApplication(LoadedApk.java:466)
02-22 11:34:38.290: E/AndroidRuntime(336):  at android.app.ActivityThread.handleBindApplication(ActivityThread.java:3260)
02-22 11:34:38.290: E/AndroidRuntime(336):  at android.app.ActivityThread.access$2200(ActivityThread.java:117)
02-22 11:34:38.290: E/AndroidRuntime(336):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:969)
02-22 11:34:38.290: E/AndroidRuntime(336):  at android.os.Handler.dispatchMessage(Handler.java:99)
02-22 11:34:38.290: E/AndroidRuntime(336):  at android.os.Looper.loop(Looper.java:123)
02-22 11:34:38.290: E/AndroidRuntime(336):  at android.app.ActivityThread.main(ActivityThread.java:3683)
02-22 11:34:38.290: E/AndroidRuntime(336):  at java.lang.reflect.Method.invokeNative(Native Method)
02-22 11:34:38.290: E/AndroidRuntime(336):  at java.lang.reflect.Method.invoke(Method.java:507)
02-22 11:34:38.290: E/AndroidRuntime(336):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
02-22 11:34:38.290: E/AndroidRuntime(336):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
02-22 11:34:38.290: E/AndroidRuntime(336):  at dalvik.system.NativeStart.main(Native Method)
02-22 11:34:38.290: E/AndroidRuntime(336): Caused by: java.lang.ClassCastException: com.compliment.ComplimentGenerator
02-22 11:34:38.290: E/AndroidRuntime(336):  at android.app.Instrumentation.newApplication(Instrumentation.java:957)
02-22 11:34:38.290: E/AndroidRuntime(336):  at android.app.Instrumentation.newApplication(Instrumentation.java:942)
02-22 11:34:38.290: E/AndroidRuntime(336):  at android.app.LoadedApk.makeApplication(LoadedApk.java:461)
02-22 11:34:38.290: E/AndroidRuntime(336):  ... 11 more

РЕДАКТИРОВАТЬ: код доступен здесь: http://pastebin.com/VSvWvgGa

EDIT2: XML доступен здесь: http://pastebin.com/uGLpyUcW

EDIT3: После внесения первоначальных изменений, рекомендованных Druv, я получаю новые ошибки logcat и обновил свой пост с этими ошибками

EDIT4: R.layout.main.xml: http://pastebin.com/Qe8Bx47m

Ответы [ 3 ]

3 голосов
/ 22 февраля 2012
    AndroidManifest.xml 
    <application android:name="ComplimentGenerator" android:icon="@drawable/icon">

 Just Rename Your
      android:name="ComplimentGenerator"  to   android:label="ComplimentGenerator"
1 голос
/ 22 февраля 2012

Я думаю, что значение атрибута "android: name" неверно! Используйте следующее (начиная с "."):

<activity android:name=".ComplimentGenerator" android:label="ComplimentGenerator">

Таким образом, Android будет знать, что начальная активность - com.compliment.ComplimentGenerator

  • "com.compliment" происходит из значения атрибута "package"

  • ". ComplimentGenerator" происходит из значения атрибута "android: name"

1 голос
/ 22 февраля 2012

Не могли бы вы добавить com.compliment здесь:

<activity android:name="com.compliment.ComplimentGenerator" android:label="ComplimentGenerator">

Редактировать: Изменить <activity android:name="ComplimentGenerator" android:label="ComplimentGenerator"> на <activity android:icon="@drawable/icon" android:label="ComplimentGenerator"> Из документов ,

открытый класс Application

Базовый класс для тех, кому необходимо поддерживать глобальное состояние приложения.Вы можете предоставить собственную реализацию , указав ее имя в теге вашего AndroidManifest.xml, что приведет к созданию экземпляра класса для вас при создании процесса для вашего приложения / пакета.

Обычно нет необходимости создавать подкласс Application.В большинстве случаев статические синглтоны могут предоставлять ту же функциональность более модульным способом.Если вашему синглтону необходим глобальный контекст (например, для регистрации широковещательных приемников), функции для его получения может быть задан контекст, который внутренне использует Context.getApplicationContext () при первом создании синглтона.

InДругими словами, когда вы добавили android: name, класс ComplimentGenerator был создан.Однако ComplimentGenerator не был разделением приложений на подклассы (что требовалось), что привело к исключению ClassCastException.

...