Android Parcelable不支持默认值导致应用崩溃
创始人
2024-08-14 23:00:40
0

在Android开发中,Parcelable是一种用于在不同组件之间传递数据的接口。然而,Parcelable不支持默认值,这可能导致应用崩溃。为了解决这个问题,你可以使用Bundle来传递数据,而不是直接使用Parcelable。

以下是一个使用Bundle传递数据的示例代码:

首先,创建一个包含数据的类,该类实现Parcelable接口:

public class MyData implements Parcelable {
    private String name;
    private int age;

    public MyData(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // 实现Parcelable接口的方法
    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeString(name);
        dest.writeInt(age);
    }

    // 添加一个静态的Parcelable.Creator接口实例化器
    public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
        @Override
        public MyData createFromParcel(Parcel source) {
            return new MyData(source);
        }

        @Override
        public MyData[] newArray(int size) {
            return new MyData[size];
        }
    };

    // 添加一个私有构造函数,用于从Parcel中读取数据
    private MyData(Parcel source) {
        name = source.readString();
        age = source.readInt();
    }

    // 添加getter和setter方法
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

然后,在发送方的Activity中,将数据打包到Bundle中,然后将Bundle作为Intent的Extra传递给接收方的Activity:

// 创建MyData对象
MyData myData = new MyData("John", 25);

// 创建一个Bundle对象,并将MyData对象放入其中
Bundle bundle = new Bundle();
bundle.putParcelable("data", myData);

// 创建一个Intent对象,并将Bundle作为Extra传递给接收方的Activity
Intent intent = new Intent(SenderActivity.this, ReceiverActivity.class);
intent.putExtras(bundle);
startActivity(intent);

在接收方的Activity中,从Intent中获取Bundle,并从Bundle中获取MyData对象:

// 从Intent中获取Bundle
Bundle bundle = getIntent().getExtras();

// 从Bundle中获取MyData对象
MyData myData = bundle.getParcelable("data");

// 使用MyData对象的数据
String name = myData.getName();
int age = myData.getAge();

使用Bundle传递数据可以避免Parcelable不支持默认值导致应用崩溃的问题。

相关内容

热门资讯

透视存在(wPK)透视挂使用教... 透视存在(wPK)透视挂使用教程(黑科技)透视辅助购买渠道(本来真的有挂)1、在ai机器人技巧中,中...
专业辅助(微扑克)ai会被检测... 专业辅助(微扑克)ai会被检测到吗(辅助挂)ai机器人(切实存在有挂)1、超多福利:超高返利,海量正...
黑科技实锤(wEPOKE)用模... 黑科技实锤(wEPOKE)用模拟器(黑科技)辅助插件(都是真的有挂)是一款可以让一直输的玩家,快速成...
黑科技攻略(wEpOke)软件... 黑科技攻略(wEpOke)软件规律(黑科技)软件透明挂是真的(好像真的是有挂);致您一封信;亲爱玩家...
黑科技能赢(德扑之星系统发牌机... 黑科技能赢(德扑之星系统发牌机制)外挂透视辅助神器(透视)切实是真的有挂(黑科技揭秘)1、德扑之星系...
专业辅助(微扑克)ai机器人(... 专业辅助(微扑克)ai机器人(辅助挂)ai胜率(一直有挂)是一款可以让一直输的玩家,快速成为一个“必...
黑科技教程(wepoke有透视... 黑科技教程(wepoke有透视挂吗)外挂透视辅助下载(透视)都是存在有挂(黑科技脚本)1)wepok...
黑科技app(wEpOke)a... 黑科技app(wEpOke)ai代打(黑科技)软件免费版(确实有挂);黑科技app(wEpOke)a...
黑科技了解(微扑克有脚本吗)外... 黑科技了解(微扑克有脚本吗)外挂透明挂辅助挂(透视)一直有挂(黑科技介绍);1、起透看视 微扑克有脚...
黑科技安装(wepoKE)软件... 黑科技安装(wepoKE)软件机器人(黑科技)软件透明演示(好像是有挂)1、超多福利:超高返利,海量...