Как изменить Locale без перезапуска приложения?

В основном то, что я пытаюсь сделать, это,

Я начинаю с MainActivity(activity_main), иду к SettingActivity(activity_setting) и меняю язык из заданных вариантов (например, французский, английский, голландский и т. д.)

Итак, что я сделал до сих пор...

OnClick названия языка воссоздает SettingActivity(activity-setting) и изменяет его string значения в соответствии с выбранным языком.

Чего я действительно хочу, так это того, что без повторного создания Activity все значения string должны применяться в соответствии с выбранным языком.

Все предложения и ответы приветствуются. Заранее спасибо.


person buzzingsilently    schedule 14.10.2016    source источник
comment
Связанный: Как изменить язык приложения Android без изменения языка телефона ?   -  person Markus Kauppinen    schedule 14.10.2016


Ответы (1)


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

Псевдокод:

TextView myTextView = (TextView) findViewbyId(R.id.tv1);
myTextView.setText(yourCustomGetLocaleFunction("some id of the string you want to display", "some language name"));

Но это плохой подход. Вы должны позволить Android обрабатывать язык вашего приложения. Просто локализуйте файл strings.xml (вы можете загружать строки из файла из кода).

Редактировать:

Чтобы на данный момент изменить язык своего приложения, вы можете использовать код из этого решения: Как изменить язык приложения Android, не меняя язык телефона?

person Felix    schedule 14.10.2016