文档开发者中心
我的
|

平行视界

服务上架

数据管理

Android开发

请教安卓和鸿蒙的idl进程通信传输自定义嵌套bean时的报错ClassNotFoundException

收起
自动换行
深色代码主题
复制
鸿蒙代码:
public class Person implements Sequenceable {
    private String name;
    private int code;
    private SexBean sex;

    @Override
    public boolean marshalling(Parcel out) {
        out.writeString(name);
        out.writeInt(code);
        out.writeSequenceable(sex);
        return true;
    }

    @Override
    public boolean unmarshalling(Parcel in) {
        name = in.readString();
        code = in.readInt();
        in.readSequenceable(sex);
        return true;
    }
收起
自动换行
深色代码主题
复制
安卓代码:
public class Person implements Parcelable {

public static final Creator<Person> CREATOR = new Creator<Person>() {
    @Override
    public Person createFromParcel(Parcel in) {
        return new Person(in);
    }

    @Override
    public Person[] newArray(int size) {
        return new Person[size];
    }
};
    private String name; 

    private int code; 

    private SexBean sex; 

    public Person(Parcel in){
        name = in.readString();
        code = in.readInt();
        sex = in.readParcelable(SexBean.class.getClassLoader());
    }

    @Override
    public boolean writeToParcel(Parcel dest, int flags) {
        dest.writeString(name);
        dest.writeInt(code);
        dest.writeParcelable(sex, flags);
        return true;
    }

Crash信息:

E/Parcel: Class not found when unmarshalling: 

    java.lang.ClassNotFoundException: Invalid name: 

        at java.lang.Class.classForName(Native Method)

        at java.lang.Class.forName(Class.java:454)

        at android.os.Parcel.readParcelableCreator(Parcel.java:3078)

        at android.os.Parcel.readParcelable(Parcel.java:3028)

        at com.test.manager.support.Person.<init>(Person.java:12)

        at com.test.famanager.support.Person$1.createFromParcel(Person.java:5)

        at comtest.famanager.support.Person$1.createFromParcel(Person.java:2)

        at android.os.Parcel.readTypedObject(Parcel.java:2875)

        at android.os.Parcel.createTypedArrayList(Parcel.java:2593)

        at com.test.manager.support.ICallback$Stub.onTransact(ICallback.java:90)

        at android.os.Binder.execTransactInternal(Binder.java:1028)

        at android.os.Binder.execTransact(Binder.java:1001)

点赞
1
收藏
回复
5
分享
举报
浏览448 发布于2021-12-22 01:58未知归属地
全部评论
最多点赞
最新发布
最早发布
欢迎开发小伙伴们进来帮帮楼主
1楼回复于2021-12-22 02:16 未知归属地
楼主好 请问这个问题解决了吗,另外问下Sequenceable和Parcelable能互通吗。
1
4楼回复于2022-11-04 13:47 来自北京
  • 印第安小斑鸠
    不好意思,一直没看到,Sequenceable和Parcelable这个我当时没试
    2025-09-11 09:58 来自湖北

楼主你好,不太明白你的意思,能具体描述一下吗?

1
3楼回复于2021-12-23 02:11 未知归属地
  • 印第安小斑鸠
    鸿蒙侧向安卓侧跨进程传数据,比如传递的数据是实体类beanA,beanA中含有beanB这个成员,就会报错了,目前尝试传成功的实体类只能包含基本类型,但我想一定有办法传这种嵌套实体类的数据,所以求解
    2021-12-23 07:47 未知归属地
写回答
新增插入模板功能
一键使用模板,快速填写内容,轻松发帖~
知道了
  • 为了保障您的信息安全,请勿上传您的敏感个人信息(如您的密码等信息)和您的敏感资产信息(如关键源代码、签名私钥、调试安装包、业务日志等信息),且您需自行承担由此产生的信息泄露等安全风险。
  • 如您发布的内容为转载内容,请注明内容来源。

我要发帖子

了解社区公约,与您携手共创和谐专业的开发者社区。