Wie fügt man ein Enum-Objekt zu einem Android-Bundle hinzu?
Antworten
Zu viele Anzeigen?Enums sind serialisierbar, daher gibt es kein Problem.
Gegeben ist die folgende Aufzählung:
enum YourEnum {
TYPE1,
TYPE2
}
Bündel:
// put
bundle.putSerializable("key", YourEnum.TYPE1);
// get
YourEnum yourenum = (YourEnum) bundle.get("key");
Absicht:
// put
intent.putExtra("key", yourEnum);
// get
yourEnum = (YourEnum) intent.getSerializableExtra("key");
Ich weiß, dies ist eine alte Frage, aber ich hatte das gleiche Problem und möchte Ihnen mitteilen, wie ich es gelöst habe. Der Schlüssel ist, was Miguel sagte: Enums sind serialisierbar.
Gegeben ist die folgende Aufzählung:
enum YourEnumType {
ENUM_KEY_1,
ENUM_KEY_2
}
Setzen:
Bundle args = new Bundle();
args.putSerializable("arg", YourEnumType.ENUM_KEY_1);
Der Vollständigkeit halber ist dies ein vollständiges Beispiel dafür, wie man eine Aufzählung in ein Bundle einträgt und von diesem zurückerhält.
Gegeben ist die folgende Aufzählung:
enum EnumType{
ENUM_VALUE_1,
ENUM_VALUE_2
}
Sie können die Aufzählung in ein Bündel packen:
bundle.putSerializable("enum_key", EnumType.ENUM_VALUE_1);
Und erhalten Sie die Aufzählung zurück:
EnumType enumType = (EnumType)bundle.getSerializable("enum_key");
Es kann besser sein, sie als String von myEnumValue.name() zu übergeben und sie von YourEnums.valueOf(s) wiederherzustellen, da sonst die Reihenfolge der Enum beibehalten werden muss!
Längere Erklärung: Umwandlung von enum ordinal in enum type
- See previous answers
- Weitere Antworten anzeigen