Как сохранить значение, выбранное на счетчике, которое изменилось бы при изменении языка устройства? - PullRequest
0 голосов
/ 11 сентября 2011

Так что это очень сложно, я думаю.

Я пытался всеми средствами и всеми моими знаниями, поэтому после поиска во всей сети и на этом сайте я должен задать вопрос.

Вот предложение:

У меня есть счетчик, который в качестве значения (на английском языке) говорит: белки птиц, пчел

На испанском языке значения будут:

abejas pajaros ardillas

Я уверен, что они одинаковы, потому что во время выполнения я создаю значения, поступающие в счетчик, из файла с именем

store.xml

<resources>
   <string name="bees">bees</string>
   <string name="birds">birds</string>
   <string name="squirrels">squirrels</string>
   <string name="other_species">other species</string>
</resources>

ив папке values-es

store.xml

<resources>
   <string name="bees">abejas</string>
   <string name="birds">pajaros</string>
   <string name="squirrels">ardillas</string>
   <string name="other_species">otra especie</string>
</resources>

Проблема в том, что я не должен сохранять фактическое значение, выбранное пользователем, потому что, когда они меняют язык устройства, тосохраненное значение будет на другом языке.

Поэтому я подумал, как получить уникальный идентификатор строкового значения, выбранного пользователем, и использовал res.getIdentifier, чтобы получить идентификатор, а затем имястрокового ресурса.ТОГДА я бы сохранил имя ресурса в базе данных, таким образом, если бы язык изменился, я смог бы найти значение на основе имени.

Теперь res.getIdentifier работал, пока значениебыло то же самое, что и имя, т.е.:

  value "bees", name="bees" (works)
  value "bees", name="abejas" (don't work)
  value "other_species", name="other species" (don't work)

Так есть ли способ, которым я могу получить имя строки в XML, из значения?

Или есть другойОбойти это?

Ответы [ 2 ]

2 голосов
/ 11 сентября 2011

Вы можете заполнить свой счетчик с помощью идентификаторов, а не строк, и использовать собственный адаптер для отображения строк.Таким образом, логика не зависит от языка.

0 голосов
/ 11 сентября 2011

Используйте другой массив в качестве отображения, например:

English  Language A  
   0         2
   1         3
   2         0
   3         1
...