我正在开发一个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
答案 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”属性值