我正在获得一个类强制转换异常
java.lang.ClassCastException: android.app.Application cannot be cast to greendroid.app.GDApplication
当我在我的项目中尝试使用绿色机器人库时。这是相关的代码。我一直试图弄清楚出了什么问题,但仍然没有运气。任何形式的帮助将不胜感激。谢谢。
public class MainMenu extends GDActivity{
private QuickActionWidget mBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setActionBarContentView(R.layout.mainmenu);
mBar = new QuickActionBar(this);
mBar.addQuickAction(new QuickAction(this, R.drawable.food, "food"));
Button foodButton=(Button)findViewById(R.id.food);
foodButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
mBar.show(v);
}
});
}
}
这是我的mainmenu.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/back"
android:orientation="vertical" >
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<RelativeLayout
android:layout_alignParentBottom="true"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="80dp"
android:id="@+id/menu"
android:background="@drawable/menu"></Button>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="80dp"
android:id="@+id/food"
android:layout_toRightOf="@id/menu"
android:background="@drawable/food"></Button>
</RelativeLayout>
</LinearLayout>
这是我的LogCat。
> 03-23 10:21:27.887: D/dalvikvm(395): GC_FOR_ALLOC freed 54K, 4% free 6389K/6595K, paused 48ms
03-23 10:21:27.937: I/dalvikvm-heap(395): Grow heap (frag case) to 10.253MB for 4096016-byte allocation
03-23 10:21:28.018: D/dalvikvm(395): GC_FOR_ALLOC freed <1K, 3% free 10389K/10631K, paused 47ms
03-23 10:21:28.128: D/dalvikvm(395): GC_CONCURRENT freed <1K, 3% free 10389K/10631K, paused 3ms+2ms
03-23 10:21:28.967: V/TLINE(395): new: android.text.TextLine@40654a10
03-23 10:21:36.497: D/AndroidRuntime(395): Shutting down VM
03-23 10:21:36.497: W/dalvikvm(395): threadid=1: thread exiting with uncaught exception (group=0x40014760)
03-23 10:21:36.507: E/AndroidRuntime(395): FATAL EXCEPTION: main
03-23 10:21:36.507: E/AndroidRuntime(395): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.bombil.ramada/com.bombil.ramada.MainMenu}: java.lang.ClassCastException: android.app.Application cannot be cast to greendroid.app.GDApplication
03-23 10:21:36.507: E/AndroidRuntime(395): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1748)
03-23 10:21:36.507: E/AndroidRuntime(395): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1764)
03-23 10:21:36.507: E/AndroidRuntime(395): at android.app.ActivityThread.access$1500(ActivityThread.java:122)
03-23 10:21:36.507: E/AndroidRuntime(395): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1002)
03-23 10:21:36.507: E/AndroidRuntime(395): at android.os.Handler.dispatchMessage(Handler.java:99)
03-23 10:21:36.507: E/AndroidRuntime(395): at android.os.Looper.loop(Looper.java:132)
03-23 10:21:36.507: E/AndroidRuntime(395): at android.app.ActivityThread.main(ActivityThread.java:4025)
03-23 10:21:36.507: E/AndroidRuntime(395): at java.lang.reflect.Method.invokeNative(Native Method)
03-23 10:21:36.507: E/AndroidRuntime(395): at java.lang.reflect.Method.invoke(Method.java:491)
03-23 10:21:36.507: E/AndroidRuntime(395): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
03-23 10:21:36.507: E/AndroidRuntime(395): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
03-23 10:21:36.507: E/AndroidRuntime(395): at dalvik.system.NativeStart.main(Native Method)
03-23 10:21:36.507: E/AndroidRuntime(395): Caused by: java.lang.ClassCastException: android.app.Application cannot be cast to greendroid.app.GDApplication
03-23 10:21:36.507: E/AndroidRuntime(395): at greendroid.app.GDActivity.getGDApplication(GDActivity.java:205)
03-23 10:21:36.507: E/AndroidRuntime(395): at greendroid.app.GDActivity.onCreate(GDActivity.java:147)
03-23 10:21:36.507: E/AndroidRuntime(395): at com.bombil.ramada.MainMenu.onCreate(MainMenu.java:18)
03-23 10:21:36.507: E/AndroidRuntime(395): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1048)
03-23 10:21:36.507: E/AndroidRuntime(395): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1712)
03-23 10:21:36.507: E/AndroidRuntime(395): ... 11 more
03-23 10:22:58.089: D/dalvikvm(446): GC_FOR_ALLOC freed 55K, 4% free 6389K/6595K, paused 48ms
03-23 10:22:58.128: I/dalvikvm-heap(446): Grow heap (frag case) to 10.253MB for 4096016-byte allocation
03-23 10:22:58.207: D/dalvikvm(446): GC_FOR_ALLOC freed <1K, 3% free 10389K/10631K, paused 46ms
03-23 10:22:58.308: D/dalvikvm(446): GC_CONCURRENT freed <1K, 3% free 10389K/10631K, paused 4ms+2ms
03-23 10:22:59.317: V/TLINE(446): new: android.text.TextLine@40654d68
03-23 10:23:01.357: D/AndroidRuntime(446): Shutting down VM
03-23 10:23:01.357: W/dalvikvm(446): threadid=1: thread exiting with uncaught exception (group=0x40014760)
03-23 10:23:01.367: E/AndroidRuntime(446): FATAL EXCEPTION: main
03-23 10:23:01.367: E/AndroidRuntime(446): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.bombil.ramada/com.bombil.ramada.MainMenu}: java.lang.ClassCastException: android.app.Application cannot be cast to greendroid.app.GDApplication
03-23 10:23:01.367: E/AndroidRuntime(446): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1748)
03-23 10:23:01.367: E/AndroidRuntime(446): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1764)
03-23 10:23:01.367: E/AndroidRuntime(446): at android.app.ActivityThread.access$1500(ActivityThread.java:122)
03-23 10:23:01.367: E/AndroidRuntime(446): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1002)
03-23 10:23:01.367: E/AndroidRuntime(446): at android.os.Handler.dispatchMessage(Handler.java:99)
03-23 10:23:01.367: E/AndroidRuntime(446): at android.os.Looper.loop(Looper.java:132)
03-23 10:23:01.367: E/AndroidRuntime(446): at android.app.ActivityThread.main(ActivityThread.java:4025)
03-23 10:23:01.367: E/AndroidRuntime(446): at java.lang.reflect.Method.invokeNative(Native Method)
03-23 10:23:01.367: E/AndroidRuntime(446): at java.lang.reflect.Method.invoke(Method.java:491)
03-23 10:23:01.367: E/AndroidRuntime(446): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
03-23 10:23:01.367: E/AndroidRuntime(446): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
03-23 10:23:01.367: E/AndroidRuntime(446): at dalvik.system.NativeStart.main(Native Method)
03-23 10:23:01.367: E/AndroidRuntime(446): Caused by: java.lang.ClassCastException: android.app.Application cannot be cast to greendroid.app.GDApplication
03-23 10:23:01.367: E/AndroidRuntime(446): at greendroid.app.GDActivity.getGDApplication(GDActivity.java:205)
03-23 10:23:01.367: E/AndroidRuntime(446): at greendroid.app.GDActivity.onCreate(GDActivity.java:147)
03-23 10:23:01.367: E/AndroidRuntime(446): at com.bombil.ramada.MainMenu.onCreate(MainMenu.java:18)
03-23 10:23:01.367: E/AndroidRuntime(446): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1048)
03-23 10:23:01.367: E/AndroidRuntime(446): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1712)
03-23 10:23:01.367: E/AndroidRuntime(446): ... 11 more
03-23 10:26:58.047: D/dalvikvm(490): GC_FOR_ALLOC freed 54K, 5% free 6311K/6595K, paused 100ms
03-23 10:26:58.097: I/dalvikvm-heap(490): Grow heap (frag case) to 10.176MB for 4096016-byte allocation
03-23 10:26:58.167: D/dalvikvm(490): GC_FOR_ALLOC freed <1K, 4% free 10310K/10631K, paused 39ms
03-23 10:26:58.267: D/dalvikvm(490): GC_CONCURRENT freed <1K, 4% free 10310K/10631K, paused 5ms+4ms
03-23 10:26:59.298: V/TLINE(490): new: android.text.TextLine@406513b8
03-23 10:27:07.167: D/AndroidRuntime(490): Shutting down VM
03-23 10:27:07.167: W/dalvikvm(490): threadid=1: thread exiting with uncaught exception (group=0x40014760)
03-23 10:27:07.177: E/AndroidRuntime(490): FATAL EXCEPTION: main
03-23 10:27:07.177: E/AndroidRuntime(490): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.bombil.ramada/com.bombil.ramada.MainMenu}: java.lang.ClassCastException: android.app.Application cannot be cast to greendroid.app.GDApplication
03-23 10:27:07.177: E/AndroidRuntime(490): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1748)
03-23 10:27:07.177: E/AndroidRuntime(490): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1764)
03-23 10:27:07.177: E/AndroidRuntime(490): at android.app.ActivityThread.access$1500(ActivityThread.java:122)
03-23 10:27:07.177: E/AndroidRuntime(490): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1002)
03-23 10:27:07.177: E/AndroidRuntime(490): at android.os.Handler.dispatchMessage(Handler.java:99)
03-23 10:27:07.177: E/AndroidRuntime(490): at android.os.Looper.loop(Looper.java:132)
03-23 10:27:07.177: E/AndroidRuntime(490): at android.app.ActivityThread.main(ActivityThread.java:4025)
03-23 10:27:07.177: E/AndroidRuntime(490): at java.lang.reflect.Method.invokeNative(Native Method)
03-23 10:27:07.177: E/AndroidRuntime(490): at java.lang.reflect.Method.invoke(Method.java:491)
03-23 10:27:07.177: E/AndroidRuntime(490): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
03-23 10:27:07.177: E/AndroidRuntime(490): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
03-23 10:27:07.177: E/AndroidRuntime(490): at dalvik.system.NativeStart.main(Native Method)
03-23 10:27:07.177: E/AndroidRuntime(490): Caused by: java.lang.ClassCastException: android.app.Application cannot be cast to greendroid.app.GDApplication
03-23 10:27:07.177: E/AndroidRuntime(490): at greendroid.app.GDActivity.getGDApplication(GDActivity.java:205)
03-23 10:27:07.177: E/AndroidRuntime(490): at greendroid.app.GDActivity.onCreate(GDActivity.java:147)
03-23 10:27:07.177: E/AndroidRuntime(490): at com.bombil.ramada.MainMenu.onCreate(MainMenu.java:18)
03-23 10:27:07.177: E/AndroidRuntime(490): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1048)
03-23 10:27:07.177: E/AndroidRuntime(490): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1712)
03-23 10:27:07.177: E/AndroidRuntime(490): ... 11 more
03-23 10:31:49.177: D/dalvikvm(567): GC_FOR_ALLOC freed 56K, 4% free 6389K/6595K, paused 47ms
03-23 10:31:49.227: I/dalvikvm-heap(567): Grow heap (frag case) to 10.253MB for 4096016-byte allocation
03-23 10:31:49.297: D/dalvikvm(567): GC_FOR_ALLOC freed <1K, 3% free 10389K/10631K, paused 40ms
03-23 10:31:49.398: D/dalvikvm(567): GC_CONCURRENT freed <1K, 3% free 10389K/10631K, paused 3ms+2ms
03-23 10:31:50.468: V/TLINE(567): new: android.text.TextLine@406405f8
03-23 10:31:52.377: D/AndroidRuntime(567): Shutting down VM
03-23 10:31:52.387: W/dalvikvm(567): threadid=1: thread exiting with uncaught exception (group=0x40014760)
03-23 10:31:52.398: E/AndroidRuntime(567): FATAL EXCEPTION: main
03-23 10:31:52.398: E/AndroidRuntime(567): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.bombil.ramada/com.bombil.ramada.MainMenu}: java.lang.ClassCastException: android.app.Application cannot be cast to greendroid.app.GDApplication
03-23 10:31:52.398: E/AndroidRuntime(567): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1748)
03-23 10:31:52.398: E/AndroidRuntime(567): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1764)
03-23 10:31:52.398: E/AndroidRuntime(567): at android.app.ActivityThread.access$1500(ActivityThread.java:122)
03-23 10:31:52.398: E/AndroidRuntime(567): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1002)
03-23 10:31:52.398: E/AndroidRuntime(567): at android.os.Handler.dispatchMessage(Handler.java:99)
03-23 10:31:52.398: E/AndroidRuntime(567): at android.os.Looper.loop(Looper.java:132)
03-23 10:31:52.398: E/AndroidRuntime(567): at android.app.ActivityThread.main(ActivityThread.java:4025)
03-23 10:31:52.398: E/AndroidRuntime(567): at java.lang.reflect.Method.invokeNative(Native Method)
03-23 10:31:52.398: E/AndroidRuntime(567): at java.lang.reflect.Method.invoke(Method.java:491)
03-23 10:31:52.398: E/AndroidRuntime(567): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
03-23 10:31:52.398: E/AndroidRuntime(567): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
03-23 10:31:52.398: E/AndroidRuntime(567): at dalvik.system.NativeStart.main(Native Method)
03-23 10:31:52.398: E/AndroidRuntime(567): Caused by: java.lang.ClassCastException: android.app.Application cannot be cast to greendroid.app.GDApplication
03-23 10:31:52.398: E/AndroidRuntime(567): at greendroid.app.GDActivity.getGDApplication(GDActivity.java:205)
03-23 10:31:52.398: E/AndroidRuntime(567): at greendroid.app.GDActivity.onCreate(GDActivity.java:147)
03-23 10:31:52.398: E/AndroidRuntime(567): at com.bombil.ramada.MainMenu.onCreate(MainMenu.java:18)
03-23 10:31:52.398: E/AndroidRuntime(567): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1048)
03-23 10:31:52.398: E/AndroidRuntime(567): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1712)
03-23 10:31:52.398: E/AndroidRuntime(567): ... 11 more
03-23 10:32:23.498: I/Process(567): Sending signal. PID: 567 SIG: 9
03-23 10:32:31.847: D/dalvikvm(605): GC_FOR_ALLOC freed 57K, 4% free 6389K/6595K, paused 44ms
03-23 10:32:31.887: I/dalvikvm-heap(605): Grow heap (frag case) to 10.253MB for 4096016-byte allocation
03-23 10:32:31.967: D/dalvikvm(605): GC_FOR_ALLOC freed <1K, 3% free 10389K/10631K, paused 44ms
03-23 10:32:32.057: D/dalvikvm(605): GC_CONCURRENT freed <1K, 3% free 10389K/10631K, paused 3ms+2ms
03-23 10:32:32.857: V/TLINE(605): new: android.text.TextLine@40644090
03-23 10:32:43.418: D/AndroidRuntime(605): Shutting down VM
03-23 10:32:43.428: W/dalvikvm(605): threadid=1: thread exiting with uncaught exception (group=0x40014760)
03-23 10:32:43.438: E/AndroidRuntime(605): FATAL EXCEPTION: main
03-23 10:32:43.438: E/AndroidRuntime(605): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.bombil.ramada/com.bombil.ramada.MainMenu}: java.lang.ClassCastException: android.app.Application cannot be cast to greendroid.app.GDApplication
03-23 10:32:43.438: E/AndroidRuntime(605): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1748)
03-23 10:32:43.438: E/AndroidRuntime(605): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1764)
03-23 10:32:43.438: E/AndroidRuntime(605): at android.app.ActivityThread.access$1500(ActivityThread.java:122)
03-23 10:32:43.438: E/AndroidRuntime(605): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1002)
03-23 10:32:43.438: E/AndroidRuntime(605): at android.os.Handler.dispatchMessage(Handler.java:99)
03-23 10:32:43.438: E/AndroidRuntime(605): at android.os.Looper.loop(Looper.java:132)
03-23 10:32:43.438: E/AndroidRuntime(605): at android.app.ActivityThread.main(ActivityThread.java:4025)
03-23 10:32:43.438: E/AndroidRuntime(605): at java.lang.reflect.Method.invokeNative(Native Method)
03-23 10:32:43.438: E/AndroidRuntime(605): at java.lang.reflect.Method.invoke(Method.java:491)
03-23 10:32:43.438: E/AndroidRuntime(605): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
03-23 10:32:43.438: E/AndroidRuntime(605): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
03-23 10:32:43.438: E/AndroidRuntime(605): at dalvik.system.NativeStart.main(Native Method)
03-23 10:32:43.438: E/AndroidRuntime(605): Caused by: java.lang.ClassCastException: android.app.Application cannot be cast to greendroid.app.GDApplication
03-23 10:32:43.438: E/AndroidRuntime(605): at greendroid.app.GDActivity.getGDApplication(GDActivity.java:205)
03-23 10:32:43.438: E/AndroidRuntime(605): at greendroid.app.GDActivity.onCreate(GDActivity.java:147)
03-23 10:32:43.438: E/AndroidRuntime(605): at com.bombil.ramada.MainMenu.onCreate(MainMenu.java:18)
03-23 10:32:43.438: E/AndroidRuntime(605): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1048)
03-23 10:32:43.438: E/AndroidRuntime(605): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1712)
03-23 10:32:43.438: E/AndroidRuntime(605): ... 11 more
03-23 10:37:43.477: I/Process(605): Sending signal. PID: 605 SIG: 9
答案 0 :(得分:15)
我只能猜测。你是android app extends GDApplication
吗?
例如(在AndroidManifest.xml
中):
<application
android:icon="@drawable/ic_gdcatalog"
android:label="@string/app_name"
android:theme="@style/Theme.GDCatalog"
android:name=".CatalogApplication">
...
...
你应该在课堂上这样做:
public class CatalogApplication extends GDApplication {
@Override
public Class<?> getHomeActivityClass() {
return CatalogActivity.class;
}
@Override
public Intent getMainApplicationIntent() {
return new Intent(Intent.ACTION_VIEW, Uri.parse(getString(R.string.app_url)));
}
}
您也可以下载GDCatalog sample Application并在Eclipse中运行它。