Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 实现Parcelable的类_Android_Serialization - Fatal编程技术网

Android 实现Parcelable的类

Android 实现Parcelable的类,android,serialization,Android,Serialization,我想将一个类的arraylist从一个活动传递到另一个活动。要做到这一点,该类正在实现Parcelable。问题是该类中很少有字段为null。如何只检查和发送不为null的值。我认为这可以通过简单的if/else writeToParcel()轻松完成但如何在以参数为包的类的构造函数中实现同样的操作。如下 private Student(Parcel in) { } 发送空值时出现一些问题 编辑:添加代码 @Override public void writeToPar

我想将一个类的arraylist从一个活动传递到另一个活动。要做到这一点,该类正在实现Parcelable。问题是该类中很少有字段为null。如何只检查和发送不为null的值。我认为这可以通过简单的if/else writeToParcel()轻松完成但如何在以参数为包的类的构造函数中实现同样的操作。如下

private Student(Parcel in) {
}
发送空值时出现一些问题

编辑:添加代码

    @Override
        public void writeToParcel(Parcel dest, int flags) {
            dest.writeString(id);
            dest.writeString(name);
            dest.writeString(grade);
            dest.writeString(dateOfBirth);
            dest.writeString(place);
                //Like wise there are many other fields
                //We have to write only values which are not null
}

       private Student(Parcel in) {
            id=in.readString();
            name=in.readString();
            grade=in.readString();
            dateOfBirth=in.readString();
            place=in.readString();
            //like wise have to read all other fields
           //we have to make sure we read only values which are not null
}

Simpest的方法是创建一个Globalclass.java并声明静态arraylist,如public static
arraylist arraylist=new arraylist()
当您想使用
Globalclass.arrayList=value
;并在项目中使用任意软件

使用intent传递消息的另一种方法

Intent i =new Intent(this,2activity.class);
i.putStringArrayListExtra(name, arrayList);

Simpest的方法是创建一个Globalclass.java并声明静态arraylist,如public static
arraylist arraylist=new arraylist()
当您想使用
Globalclass.arrayList=value
;并在项目中使用任意软件

使用intent传递消息的另一种方法

Intent i =new Intent(this,2activity.class);
i.putStringArrayListExtra(name, arrayList);

我真的不想创建任何可能最终导致我的项目内存崩溃的静态ArrayList。我的项目中的ArrayList可能有多达300个类对象。每个类都有大约20个元素。因此创建静态ArrayList不是明智的主意。Intent i=new Intent(这个,2activity.class);i、 putStringArrayListExtra(名称、值);由于全局静态变量而被否决。这没有任何用处(
Intent
s用于执行此操作),并且只会导致崩溃(如果从另一个
活动调用您的
活动
,而静态变量仍然
null
?)我真的不想创建任何可能最终导致我的项目内存崩溃的静态ArrayList。我的项目中的ArrayList可能有多达300个类对象。每个类都有大约20个元素。因此创建静态ArrayList不是明智的主意。Intent i=new Intent(这个,2activity.class);i、 putStringArrayListExtra(名称、值);由于全局静态变量而被否决。这是没有用的(
Intent
s被用来做这件事),并且只会导致崩溃(你的
Activity
被另一个调用,而静态变量仍然是
null
?)为什么你没有实现
Serializable
。您已经分析了您的问题并封装了您的域对象,请在学生级别以面向对象的方式进行思考。不需要关心域对象中的内部值,也不需要从外部对其执行特殊的条件代码。请粘贴您的代码。。。处理null valuesHow不应该是一个问题,相反,您没有实现可序列化的
吗?您试图实现的目标没有任何意义。您已经分析了您的问题并封装了您的域对象,请在学生级别以面向对象的方式进行思考。不需要关心域对象中的内部值,也不需要从外部对其执行特殊的条件代码。请粘贴您的代码。。。处理空值应该没有问题