Android应用程序在打开时崩溃

时间:2012-02-22 16:05:59

标签: android crash logcat

我正在开发一个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 个答案:

答案 0 :(得分:3)

    AndroidManifest.xml 
    <application android:name="ComplimentGenerator" android:icon="@drawable/icon">

 Just Rename Your
      android:name="ComplimentGenerator"  to   android:label="ComplimentGenerator"

答案 1 :(得分:1)

你可以在这里添加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"> 来自docs

  

公共类应用

     

需要维护全局应用程序状态的基类。   您可以通过在您的帐户中指定其名称来提供自己的实施   AndroidManifest.xml的标记,它将导致类   为你实例化当你的过程   应用程序/包已创建。

     

通常不需要子类Application。在大多数情况下,   静态单例可以在更模块化的情况下提供相同的功能   办法。如果您的单身人士需要全局上下文(例如注册   广播接收器),可以给出一个检索它的功能   内部使用Context.getApplicationContext()的Context   首先构建单身人士。

换句话说,当你添加了android:name时,正在实例化ComplimentGenerator类。但是,ComplimentGenerator不是子类化Application(这是必需的),这导致了ClassCastException。

答案 2 :(得分:1)

我认为“android:name”属性值是错误的!使用以下内容(以“。”开头):

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

因此,Android会知道启动活动是com.compliment.ComplimentGenerator

  • “com.compliment”来自“package”属性值

  • “。ComplimentGenerator”来自“android:name”属性值