OnConfigurationChange не вызывается после изменения языка - программирование
Подтвердить что ты не робот

OnConfigurationChange не вызывается после изменения языка

Мне нужно обновить содержимое фрагментов при смене языка из одного фрагмента. Поэтому я подумал об использовании метода onConfigurationChange, который находится в моей основной деятельности (эта активность контролирует все фрагменты) и воссоздает все фрагменты при изменении языка. Но этот метод не вызывается об изменении языка.

Я включил локаль под тегом активности файла манифеста. onConfigurationChange вызывает изменение ориентации.

Я изменяю язык, указанный в этой ссылке Программный перевод программного обеспечения в Android и его работу.

Может кто-то прояснит, какие изменения потребуется для устранения этой проблемы.

4b9b3361

Ответ 1

Для тех, кто сталкивается с этой проблемой, OP был прав, но немного неясен. Вы должны определить android:configChanges="layoutDirection|locale" для вызова onConfigurationChanged().
Я предполагаю, что это необходимо, потому что изменение локали также может повлиять на направление макета (для языков RTL), поэтому объявления только языка могут быть недостаточными, но это только мое предположение по этому вопросу.

Ответ 2

user layoutDirection атрибут в манифесте

Ответ 3

Вы можете перейти от приложения и установить его в манифесте. Затем поставьте onConfigurationChanged и проверьте, совпадает ли предыдущий языковой стандарт с текущим:

if(!_currentLocale.equals(newConfig.locale))
  {
  _currentLocale=newConfig.locale;
  // locale has changed
  }

Переменная "_currentLocale" должна быть инициализирована в методе onCreate нового класса (который расширяет Application), как таковой:

  @Override
  public void onCreate()
    {
    super.onCreate();
    _currentLocale=getResources().getConfiguration().locale;
    }