mig*_*uel 685
枚举是可序列化的,所以没有问题.
鉴于以下枚举:
enum YourEnum {
TYPE1,
TYPE2
}
Run Code Online (Sandbox Code Playgroud)
束:
// put
bundle.putSerializable("key", YourEnum.TYPE1);
// get
YourEnum yourenum = (YourEnum) bundle. getSerializable("key");
Run Code Online (Sandbox Code Playgroud)
意图:
// put
intent.putSerializableExtra("key", yourEnum);
// get
yourEnum = (YourEnum) intent.getSerializableExtra("key");
Run Code Online (Sandbox Code Playgroud)
Ale*_*ado 160
我知道这是一个老问题,但我遇到了同样的问题,我想分享一下我是如何解决它的.关键是Miguel说的:Enums是Serializable.
鉴于以下枚举:
enum YourEnumType {
ENUM_KEY_1,
ENUM_KEY_2
}
Run Code Online (Sandbox Code Playgroud)
放:
Bundle args = new Bundle();
args.putSerializable("arg", YourEnumType.ENUM_KEY_1);
Run Code Online (Sandbox Code Playgroud)
The*_*eIT 39
为了完整起见,这是一个完整的例子,说明如何从一个包中输入和获取一个枚举.
鉴于以下枚举:
enum EnumType{
ENUM_VALUE_1,
ENUM_VALUE_2
}
Run Code Online (Sandbox Code Playgroud)
你可以将枚举放入一个包中:
bundle.putSerializable("enum_key", EnumType.ENUM_VALUE_1);
Run Code Online (Sandbox Code Playgroud)
并获得枚举:
EnumType enumType = (EnumType)bundle.getSerializable("enum_key");
Run Code Online (Sandbox Code Playgroud)
Vla*_*lav 30
我用kotlin.
companion object {
enum class Mode {
MODE_REFERENCE,
MODE_DOWNLOAD
}
}
Run Code Online (Sandbox Code Playgroud)
然后投入意图:
intent.putExtra(KEY_MODE, Mode.MODE_DOWNLOAD.name)
Run Code Online (Sandbox Code Playgroud)
当你净获得价值:
mode = Mode.valueOf(intent.getStringExtra(KEY_MODE))
Run Code Online (Sandbox Code Playgroud)
小智 6
另外一个选项:
public enum DataType implements Parcleable {
SIMPLE, COMPLEX;
public static final Parcelable.Creator<DataType> CREATOR = new Creator<DataType>() {
@Override
public DataType[] newArray(int size) {
return new DataType[size];
}
@Override
public DataType createFromParcel(Parcel source) {
return DataType.values()[source.readInt()];
}
};
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(this.ordinal());
}
}
Run Code Online (Sandbox Code Playgroud)