【问题标题】:Is it possible to a List of Objects in putExtra是否可以在 putExtra 中列出对象列表
【发布时间】:2014-04-26 04:20:21
【问题描述】:

我知道 putExtra 可用于在活动之间传递对象/字符串。但我正在尝试您将ArrayList 之类的对象放在ArrayList<Foo>putExtra

这可能吗?

【问题讨论】:

  • 不,但你可以使数组可包裹,包裹它,然后将包裹转储到 putExtra

标签: android android-activity


【解决方案1】:

不,不是。您需要将 serialize 您的对象转换为某种字符串表示形式。一种可能的字符串表示形式是 JSON,如果您问我,在 android 中序列化到/从 JSON 序列化的最简单方法之一是通过 Google GSON

此外,如果您只是传递对象,那么 Parcelable 就是为此而设计的。与使用 Java 的本机序列化相比,它需要更多的努力,但它的速度更快(我的意思是,速度更快)。

来自文档:

 public class MyParcelable implements Parcelable {
 private int mData;

 public int describeContents() {
     return 0;
 }

 public void writeToParcel(Parcel out, int flags) {
     out.writeInt(mData);
 }

 public static final Parcelable.Creator<MyParcelable> CREATOR
         = new Parcelable.Creator<MyParcelable>() {
     public MyParcelable createFromParcel(Parcel in) {
         return new MyParcelable(in);
     }

     public MyParcelable[] newArray(int size) {
         return new MyParcelable[size];
     }
 };

 private MyParcelable(Parcel in) {
     mData = in.readInt();
 }
}

【讨论】:

    【解决方案2】:

    【讨论】:

    • 您需要确保该数组实际上是可打包的才能使其工作。
    【解决方案3】:

    仅适用于非常有限且特定类型的“Foo”。如果我没记错的话 Double 和 Long(或者可能是 Integer?)就是这些类型。可能有一种方法可以通过将更通用的 ArrayList 封装在一些可序列化的对象中来偷运它,但我不确定。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-10
      • 1970-01-01
      • 2023-03-12
      • 2011-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多