Как предотвратить изменение языка при изменении ориентации экрана

В приложении у меня есть три кнопки, которые меняют язык в приложении:

[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 есть много руководств!

Другие вопросы по тегам