【问题标题】:Is there any way to pass not serializable arguments between Activity?有没有办法在 Activity 之间传递不可序列化的参数?
【发布时间】:2016-09-27 18:17:40
【问题描述】:

有什么方法可以在 Android 中的 Activity 之间传递不可序列化的数据? 例如,如果我无法序列化 FieldForSomeReasonNotSerializable(如 Bitmap、Google 的 LatLng、TextView),我如何将此类传递给 Intent:

class MyClass implements java.io.Serializable{
       String s = "serializable";
       FieldForSomeReasonNotSerializable field=new FieldForSomeReasonNotSerializable();
}

【问题讨论】:

  • 您应该通过一个意图传递位图,您应该将该位图保存到磁盘,然后传递该位图的文件 url。您也不应该在意图中传递View
  • 我知道,这只是一个例子.. LatLng.class 呢?
  • LatLng 实现了 parcelable,因此您已经可以在意图中传递它

标签: java android serialization


【解决方案1】:

您可以实现 Parcelable 而不是 Serializable。在 android Studio 中,向导(红色灯泡)将帮助您实现 Parcelable 接口。只需点击Implements methods,然后在类名中使用相同的红灯泡添加parcelable implementation

公共类 CategoryDTO 实现 Parcelable {

@PrimaryKey
private String id;

/**
 * Category Name
 */
private String name;

/**
 * Category Color
 */
private String color;


public CategoryDTO() {

}

public CategoryDTO(String id, String name, String color) {
    this.name = name;
    this.color = color;
    this.id = id;
}

protected CategoryDTO(Parcel in) {
    id = in.readString();
    color = in.readString();
    name = in.readString();

}

public static final Creator<CategoryDTO> CREATOR = new Creator<CategoryDTO>() {
    @Override
    public CategoryDTO createFromParcel(Parcel in) {
        return new CategoryDTO(in);
    }

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

}

【讨论】:

  • 谢谢! Parcelablizatio(?) 非常有趣,现在我正在阅读 java 文档中的相关内容..
猜你喜欢
  • 2021-11-30
  • 2018-12-02
  • 1970-01-01
  • 2022-01-03
  • 1970-01-01
  • 1970-01-01
  • 2021-09-30
  • 1970-01-01
相关资源
最近更新 更多