Безопасные enum пользовательские атрибуты в Android

У меня есть ситуация, которая, как я полагаю, довольно распространена. У меня есть перечисление Java:

public enum Flavour { CHOCOLATE, STRAWBERRY } 

У меня есть пользовательский атрибут, определенный в attrs.xml:

 <attr name="flavour"> <enum name="chocolate" value="0" /> <enum name="strawberry" value="1" /> </attr> 

Но это кажется очень хрупким. Он полагается на правильное сопоставление вручную атрибута с перечислением.

Если кто-то добавляет «SARDINE» в конец Enum Flavor, то он явно не будет автоматически добавлен в определение атрибута. Это справедливо.

Но хуже, если кто-то добавит «SARDINE» в середине перечисления, он сломает макеты xml, которые используют «клубнику».

Как люди преодолевают это? Я рассмотрел использование строки (и используя Flavour.valueOf() ), но я надеялся, что там может быть более чистое решение.

Solutions Collecting From Web of "Безопасные enum пользовательские атрибуты в Android"

До тех пор, пока вы сохраняете обновление списка Flavor и синхронизированы с атрибутом вкуса, все должно быть хорошо, но если вы действительно не хотите беспокоиться о заказе, не используйте индексы. Вместо этого пойдите со Струнами, как вы считали.

 public enum Flavor { CHOCOLATE, STRAWBERRY public static Flavor get(String s) { s = s.toLowerCase(); if(s.equals("chocolate")) { return CHOCOLATE; } else { return STRAWBERRY; } } }