gpt4 book ai didi

android - 在 Android 中制作自定义 java 对象 Parcelable

转载 作者:太空宇宙 更新时间:2023-11-03 12:11:56 24 4
gpt4 key购买 nike

我正在尝试通过 Intent 将类型为 MyCustomObject 的对象发送到另一个 Activity 。我知道,要使类 Parcelable,我应该做 public class MyCustomObject implements Parcelable,但我不确定自定义对象数组如何在 parcelable 中工作。这是我到目前为止所得到的。另外,我是否也需要让 Search 类实现 Parcelable?

这是我更新的答案 我现在在执行 intent.getParcelableExtra(search) 时得到一个空对象。也许我没有正确创建搜索数组?

public class MyCustomObject implements Parcelable{
public Search search[];

public MyCustomObject(Parcel in){
in.readArray(MyCustomObject.class.getClassLoader());
}

@Override
public int describeContents(){
return 0;
}

@Override
public void writeToParcel(Parcel dest, int flags){
dest.writeArray(search)
}

public static final Parcelable.Creator<MyCustomObject> CREATOR = new Parcelable.Creator<MyCustomObject>(){
@Override
public MyCustomObject createFromParcel(Parcel source){
return new MyCustomObject(source);
}

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

public static class Search implements Parcelable{
public int rank;
public String title;
public String[] imageURL;

public Search(Parcel in){
rank = in.readInt();
title = in.readString();

String[] url = new String[4];
in.readStringArray(url);
url = imageURL
}

@Override
public int describeContents(){
return 0;
}

@Override
public void writeToParcel(Parcel dest, int flags){
dest.writeInt(rank);
dest.writeString(title);
dest.writeStringArray(imageURL);
}

public static final Parcelable.Creator<Search> CREATOR = new Parcelable.Creator<Search>(){

@Override
public Search createFromParcel(Parcel source){
return new Search(source);
}

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

}
}

最佳答案

一些事情。首先,您的 Search 对象也需要实现 Parcelable。接下来,您需要创建一个名为 CREATOR 的静态字段,它实现了 Parcelable.Creator 。这将有一个名为 createFromParcel 的方法,该方法返回 MyCustomObject 的一个实例。这是您从包裹中读取数据并创建 MyCustomObject 的新实例的地方。这与 writeToParcel 本质上是相反的。这也适用于搜索,因为您必须使其实现 Parcelable。总结:

  • 使搜索实现可打包
  • 实现 Search.writeToParcel
  • 在 Search 中创建一个名为 CREATOR 的静态字段,它实现了 Parcelable.Creator
  • 实现Search.CREATOR的createFromParcel方法
  • 在名为 CREATOR 的 MyCustomObject 中创建一个实现 Parcelable.Creator 的静态字段
  • 实现MyCustomObject.CREATOR的createFromParcel方法

关于android - 在 Android 中制作自定义 java 对象 Parcelable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7559241/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com