Generic method for enums
For some reason (by the time, I'm writing this post, I've already forgotten) I created a class, that can extract an enum from an android Bundle (basically a Map of stuffs, in this case the stuff is String). I think the reason was to make this kind of operation easy. All the null checks are in one place, and it requires 2 lines of code to extract any enum from a bundle.
public class EnumFromBundleExtractor<T extends Enum<T>> {
@Nonnull
public T getValueFrom(Bundle savedInstanceState, @Nonnull String key, @Nonnull T defaultValue) {
Preconditions.checkNotNull(key);
Preconditions.checkNotNull(defaultValue);
if (savedInstanceState == null) {
return defaultValue;
}
final String bundledValueAsString = savedInstanceState.getString(key);
if (bundledValueAsString == null) {
return defaultValue;
}
try {
return Enum.valueOf(defaultValue.getDeclaringClass(), bundledValueAsString);
} catch (IllegalArgumentException iae) {
return defaultValue;
}
}
}
Usage (VisualState is an enum):
final EnumFromBundleExtractorvisualStateExtractor = new EnumFromBundleExtractor (); final VisualState visualState = visualStateExtractor.getValueFrom(savedInstanceState, BUNDLE_VISUAL_STATE_AS_ORDINAL, VisualState.INITIAL);
No comments:
Post a Comment