2016-04-07 3 views
0

У меня немного странная проблема смены языков на Android. Когда я переключаю язык устройства и открываю приложение - все работает хорошо. Но когда приложение все еще работает, и я меняю язык устройства - одна строка (метка checkBox) не изменится и не изменится со второго языка на первый, пока приложение работает. Если я перезапущу приложение, все будет хорошо работать.Ярлык не меняется при изменении языка во время работы приложения

Это происходит для обеих ориентаций (у меня есть другой макет для пейзажного).

Я попытался проверить, было ли это потому, что изменение было связано с тем, что второй язык является ивритом (поэтому направление языка отменено), поэтому я добавил французский (с немного разными строками с английского), но он не работа.

Я также попытался добавить checkBox.setText(getString(R.string.ChkBox)); в onCreate, но это не сработало.

+0

Было бы намного легче помочь вам, если бы вы разместили свой код, где вы настраиваете свои текстовые поля. Если вы делаете это только в 'onCreate()', и после этого вы вернетесь в приложение, оно пропустит 'onCreate()' и перейдет в 'onResume()' как часть жизненного цикла активности. Вот почему вы видите изменения только при перезагрузке приложения, потому что 'onCreate()' будет снова запущен. – Pztar

+0

я не отправлял свой код, потому что я не изменил ярлык этого CheckBox на всех после объявления CheckBox и строку он показывает: '' в ява файлы, я только проверка статус CheckBox в – avinoam

ответ

1

Это, вероятно, контратип вопрос onConfigurationChange not called after changing locale

Вам нужно будет добавить следующее к определению активности в вашем AndroidManifest.xml файл:

android:configChanges="layoutDirection|locale" 

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

Обратите внимание, что для работы вашего strings.xml требуется дополнительная работа, чтобы работать с переводами/разными локалями. Вы можете использовать помощник перевода Android Studio, чтобы упростить его.

+0

это означает, что onConfigurationChange он должен снова установить каждый отдельный текст этого представления? –

+0

Да, это цель onConfigurationChanged - вы слушаете редкое событие, когда пользователь переключает язык своего устройства. Если вы не хотите, чтобы пользователь перезагружал активность вручную, предпочтительнее переключение текста в onConfigurationChange. Ваше решение убить деятельность и перезапустить ее является расточительством ресурсов и ненужным. Он может инкапсулировать всю логику для инициализации представления в одном методе и вызвать это из onConfigurationChanged (а также onCreate), или он может поместить средства настройки текста на шаге onResume. – jyanks

+0

это означает, что андроид: текст бесполезен, если вам нужно изменить язык, потому что вы должны установить каждый отдельный текст вручную, не так ли? –

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