【问题标题】:How to get rid of java.lang.RuntimeException: Unable to start activity ComponentInfo?如何摆脱 java.lang.RuntimeException:无法启动活动 ComponentInfo?
【发布时间】:2013-08-06 02:39:45
【问题描述】:

我知道这个问题已经在这个论坛上发布过很多次了。我已经检查了我的 Manifest xml 文件,并且已经为此工作了几天。我已经在 Manifest xml 中声明了我的活动,但仍然出现此错误。如何摆脱这个运行时错误?

Logcat:

08-05 22:24:25.037: E/AndroidRuntime(1912): FATAL EXCEPTION: main
08-05 22:24:25.037: E/AndroidRuntime(1912): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.powersourceinternational.main/com.zooz.android.lib.CheckoutActivity}: java.lang.ClassCastException: com.carouseldemo.main.ZooZInvoice
08-05 22:24:25.037: E/AndroidRuntime(1912):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1821)
08-05 22:24:25.037: E/AndroidRuntime(1912):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1842)
08-05 22:24:25.037: E/AndroidRuntime(1912):     at android.app.ActivityThread.access$1500(ActivityThread.java:132)
08-05 22:24:25.037: E/AndroidRuntime(1912):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1038)
08-05 22:24:25.037: E/AndroidRuntime(1912):     at android.os.Handler.dispatchMessage(Handler.java:99)
08-05 22:24:25.037: E/AndroidRuntime(1912):     at android.os.Looper.loop(Looper.java:150)
08-05 22:24:25.037: E/AndroidRuntime(1912):     at android.app.ActivityThread.main(ActivityThread.java:4263)
08-05 22:24:25.037: E/AndroidRuntime(1912):     at java.lang.reflect.Method.invokeNative(Native Method)
08-05 22:24:25.037: E/AndroidRuntime(1912):     at java.lang.reflect.Method.invoke(Method.java:507)
08-05 22:24:25.037: E/AndroidRuntime(1912):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
08-05 22:24:25.037: E/AndroidRuntime(1912):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
08-05 22:24:25.037: E/AndroidRuntime(1912):     at dalvik.system.NativeStart.main(Native Method)
08-05 22:24:25.037: E/AndroidRuntime(1912): Caused by: java.lang.ClassCastException: com.carouseldemo.main.ZooZInvoice
08-05 22:24:25.037: E/AndroidRuntime(1912):     at com.zooz.android.lib.CheckoutActivity.onCreate(Unknown Source)
08-05 22:24:25.037: E/AndroidRuntime(1912):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1072)
08-05 22:24:25.037: E/AndroidRuntime(1912):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1785)
08-05 22:24:25.037: E/AndroidRuntime(1912):     ... 11 more

类:

 package com.carouseldemo.main;

import java.io.Serializable;

public class ZooZInvoice implements Serializable {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    /**
     * 
     */


    public void addItem(String string, int i, double d, int j, String string2,
            String string3) {
        // TODO Auto-generated method stub

    }

    public void setInvoiceNumber(String string) {
        // TODO Auto-generated method stub

    }

    public void setInvoiceAdditionalDetails(String string) {
        // TODO Auto-generated method stub

    }

}

清单 XML:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.powersourceinternational.main"
      android:versionCode="4"
      android:versionName="1.3"
      >
      <uses-permission android:name ="android.permission.INTERNET"/>
      <uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"
/>
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.VIBRATE"/>
<uses-permission android:name="android.permission.GET_ACCOUNTS"/>
    <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" android:screenOrientation="portrait"/>
    <application android:icon="@drawable/iconapp4" android:label="@string/app_name">

        <activity android:name="com.paypal.android.MEP.PayPalActivity"

android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:configChanges="keyboardHidden|orientation|screenSize"/>  
<activity android:name=".ZooZInvoice" android:label="@string/app_name"/>
        <activity android:name="com.zooz.android.lib.CheckoutActivity"
android:theme="@android:style/Theme.Translucent"
android:configChanges="keyboardHidden|orientation|screenSize"/>
        <activity android:name="com.carouseldemo.main.Manu"> 

            </activity>
        <activity android:name="com.carouseldemo.main.Splash" android:label="@string/app_name" android:screenOrientation="portrait" android:configChanges="orientation|keyboardHidden" >



            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name="com.carouseldemo.main.MainActivity" android:screenOrientation="portrait"/>
    </application>
</manifest> 

主要活动中的结帐活动代码:

public void onCheckoutClick(View v) {
        // create new intent CheckoutActivity
        Intent intent = new Intent(this, CheckoutActivity.class);
        // supply app-key on the intent
        intent.putExtra(CheckoutActivity.ZOOZ_APP_KEY, "key");
        // supply transaction details (amount, currency)
        intent.putExtra(CheckoutActivity.ZOOZ_AMOUNT, 500.00);

        intent.putExtra(CheckoutActivity.ZOOZ_CURRENCY_CODE, "USD");
        // supply environment mode (sandbox or production)
        intent.putExtra(CheckoutActivity.ZOOZ_IS_SANDBOX, true);

        ZooZInvoice invoice = new ZooZInvoice();
        invoice.addItem("item1", 1, 0.5, 0, "1", "good choice!");
        invoice.addItem("item2", 1, 3, 0, "2", "additional details for item 2");
        invoice.addItem("item3", 1, 2, 0, "3", "additional details for item 3");
        invoice.addItem("item4", 1, 8, 0, "4", "additional details for item 4");
        invoice.setInvoiceNumber("5512-FA");
        invoice.setInvoiceAdditionalDetails("Power Ups for user 12345");
        intent.putExtra(CheckoutActivity.ZOOZ_INVOICE, invoice);

        startActivityForResult(intent, ZooZ_Activity_ID);

    }

我已经尝试将清单中的活动声明为 com.carouseldemo.main.ZooZInvoice 和 com.powersourceinternational.main.ZooZInvoice (即使路径方式是第一个,com.carouseldemo.main.ZooZInvoice

我怎样才能摆脱这个错误?

我用来写这段代码的原始参考指南:https://app.zooz.com/portal/PortalController?cmd=resources

PDF格式,代码在第20页底部。

【问题讨论】:

  • 发布您的CheckoutActivity 代码
  • 我编辑了我的问题。 CheckoutActivity 代码现在在那里。
  • 请发布您的CheckoutActivity.java
  • 是的,它就在那里。 CheckoutActivity 在 Main Activity 中。
  • 这个活动只有启动代码,没有活动代码。使用名称CheckoutActivity 发布课程(可能在同名文件中)。

标签: java android eclipse runtime-error development-environment


【解决方案1】:

com.zooz.android.lib.CheckoutActivity.onCreate 方法中的错误。它尝试将ZooZInvoice 类的对象转换为其他类。您将ZooZInvoice 类的对象作为参数CheckoutActivity.ZOOZ_INVOICE 传递。 在这里查看库的文档中预期的类型,并使您的类 ZooZInvoice 继承自该类型或使用预期的类型。

编辑:您应该使用库中的 ZooZInvoice 类,而不是您自己的同名类。

【讨论】:

  • 'CheckoutActivity.ZOOZ_INVOICE' 是一个字符串,'invoice' 是一个序列化。它们分别是“名称”和“值”。如何使 ZooZInvoice 继承自这种类型?
  • 我在原始问题的底部发布了原始参考指南链接。如果有帮助的话,它是第 20 页底部的 PDF 格式。
  • 我不确定我是否理解正确。我是初学者。可以发一下步骤吗?我应该删除我为 ZooZInvoice 制作的课程吗?
猜你喜欢
  • 2014-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-10
  • 2014-02-07
  • 2014-01-23
相关资源
最近更新 更多