我收到了一个类转换异常
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

最佳答案

我只能猜测。您是否使用Android应用程序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中运行。

关于android - java.lang.ClassCastException : android. app.Application 无法转换为 greendroid.app.GDApplication,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9834422/

10-09 09:49