2014-01-18 3 views
0

Привет У меня возникла проблема с PreferencesFragment и сохранением настроек. Когда я меняю язык телефона в Android, сохраненные значения моих настроек все еще находятся на предыдущем языке и не заданы в PreferencesFragment. У меня разные папки значений для каждого языка. Что я могу сделать, чтобы исправить это?SharedPreferences и другие языки

+0

Пожалуйста, объясните вопрос более четко. Строки предпочтений не изменяются (например, название, сводка и т. Д.)? Или вы хотите автоматически изменить сохраненные значения настроек? –

+0

Я хочу автоматически изменять сохраненные значения настроек. – keysersoze

+0

Завершите и перезапустите функцию PreferenceActivity. –

ответ

0

Ну, так как вы хотите изменить значения настроек. Я не думаю, что это может быть сделано автоматически API. Вам нужно будет написать свой собственный код, чтобы установить значения предпочтений.

Вы можете сохранить значения, зависящие от языка, в каталогах values-xx. Напр. строки, целые числа и т. д.

Когда кто-то меняет язык телефона, ваша деятельность перезапускается. Вы должны использовать это как возможность изменить значения предпочтений в onCreate. Сначала сохраните текущий используемый язык, чтобы его можно было использовать для определения того, был ли язык изменен. Вы можете использовать Locale, чтобы сделать это (Locale.getDefalt())

Теперь, если вы обнаружили изменения языка, просто получить значение от использования Resources объекта путем вызова getResources() и изменить все зависящее от языка значения предпочтений.

+0

Я понятия не имею, как это сделать для ListPreference и MultiSelectListPreference – keysersoze

+0

Почему вы сохраняете языковые зависимости в настройках? Вы должны использовать строки для отображения и сохранения в виде целых чисел. Вот почему для LisPreference есть два атрибута (entries, entryValues). Из целочисленного значения, которое сохраняется, вы можете получить преобразованную переведенную строку. –

0

Язык предпочтений в вашем приложении не зависит от вашего языка телефона. Если это зависит от вас, вы даже не нуждаетесь в нем в своем приложении, на первом месте. Вы должны сделать кодирование таким образом, чтобы у вас был Авто Язык, который зависит от языка телефона.

Смежные вопросы