Java 将自定义对象数组从一个活动转移到另一个活动
我创建了一个名为Java 将自定义对象数组从一个活动转移到另一个活动,java,android,Java,Android,我创建了一个名为cardwiew的类。 cardwiew对象有1个属性:整数 我想将CardView对象的数组列表从MainActivity传输到MainActivity2 我尝试过这样做,但当我打印第一个(或任何)对象的getNumber时,它返回的是0,而不是我在new Cardview中设置的数字(int number) 代码如下: main活动onCreate(): CardView类: public class CardView implements Parcelable {
cardwiew
的类。
cardwiew
对象
有1个属性:整数
我想将CardView
对象的数组列表从MainActivity
传输到MainActivity2
我尝试过这样做,但当我打印第一个(或任何)对象的getNumber
时,它返回的是0,而不是我在new Cardview中设置的数字(int number)
代码如下:
main活动onCreate()
:
CardView类:
public class CardView implements Parcelable {
int number;
public CardView(int number){
this.number = number;
}
public int getNumber() {
return number;
}
protected CardView(Parcel in) {
}
public static final Creator<CardView> CREATOR = new Creator<CardView>() {
@Override
public CardView createFromParcel(Parcel in) {
return new CardView(in);
}
@Override
public CardView[] newArray(int size) {
return new CardView[size];
}
};
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel parcel, int i) {
}
}
public类CardView实现可包裹{
整数;
公共卡视图(整数){
这个数字=数字;
}
public int getNumber(){
返回号码;
}
受保护的CardView(包裹中){
}
公共静态最终创建者=新创建者(){
@凌驾
公共CardView createFromParcel(地块在中){
返回新的CardView(在中);
}
@凌驾
公共CardView[]新数组(整数大小){
返回新的CardView[大小];
}
};
@凌驾
公共int描述内容(){
返回0;
}
@凌驾
公共无效书面包裹(包裹,内部i){
}
}
试试这个:
protected CardView(Parcel in) {
number = in.readInt();
}
@Override public void writeToParcel(Parcel parcel, int i) {
parcel.writeInt(number);
}
默认情况下,未初始化的int
变量的值将为0
,因此number
的初始值为0。有了这个构造器,编号
从包裹接收。我通过这个视频了解到:
我应该将以下代码添加到cardwiew
类中
protected CardView(Parcel in) {
number = in.readInt();
}
@Override
public void writeToParcel(Parcel parcel, int i) {
parcel.writeInt(number);
}
由于这一行,第二个活动的应用程序在创建()时崩溃。这是一半答案,但谢谢。@覆盖公共无效writeToParcel(Parcel Parcel,int i){Parcel.writeInt(number);}我已经理解了,但真的,谢谢!请编辑您的答案,以便我将其标记为正确答案
protected CardView(Parcel in) {
number = in.readInt();
}
@Override public void writeToParcel(Parcel parcel, int i) {
parcel.writeInt(number);
}
protected CardView(Parcel in) {
number = in.readInt();
}
@Override
public void writeToParcel(Parcel parcel, int i) {
parcel.writeInt(number);
}