Как предотвратить изменение языка при изменении ориентации экрана
В приложении у меня есть три кнопки, которые меняют язык в приложении:
[PL]
setLocale("pl");
[DE]
setLocale("de");
[RU]
setLocale("en");
public void setLocale(String lang) {
myLocale = new Locale(lang);
Resources res = getResources();
DisplayMetrics dm = res.getDisplayMetrics();
Configuration conf = res.getConfiguration();
conf.locale = myLocale;
res.updateConfiguration(conf, dm);
Intent refresh = new Intent(this, MainActivity.class);
startActivity(refresh);
this.finish();
}
В одном месте в моем приложении я меняю ориентацию экрана на горизонтальную (в приложении есть только одно действие). И тут возникает проблема. Изменение ориентации экрана приводит к изменению языка на настройки по умолчанию в телефоне. Я попытался добавить следующую запись в файл AndroidManifest - но это не работает.
<activity android:name=".MainActivity"
android:configChanges="orientation|keyboardHidden">
Поиск SO также ничего не дал, я буду благодарен, чтобы помочь решить эту проблему. С уважением Марчин
1 ответ
Пожалуйста, храните Locale
что вы хотите использовать в постоянном типе хранилища, и восстановить его в своем onCreate
, Вы могли бы даже иметь кусок кода для сброса локали по умолчанию в onStop
если вы хотите сохранить ориентацию, но не перезапускать приложение!
Например, вы можете сохранить Locale в SharedPreferences вместе со всеми другими данными конфигурации вашего приложения. Если вы не знаете о SharedPreferences, в Google есть много руководств!