Определить изменение языка системы - PullRequest
0 голосов
/ 13 июня 2019

Я хочу получать информацию в своем классе приложений при изменении языка системы.Мой класс приложения:

class MyApp : Application() {

    override fun onConfigurationChanged(newConfig: Configuration?) {
        Log.d("yyy", "onConfigurationChanged, old locale " + resources.configuration.locale + " new locale " + newConfig?.locale)
        super.onConfigurationChanged(newConfig)
    }

}

Я бы предположил, что, если сравнить текущую локаль с новой локалью до , вызывая super.onConfigurationChanged(newConfig), они будут отличаться, но когда я установлю системную локальНапример, En_US в приложении настроек Android, resources.configuration.locale уже возвращает En_US (и новый конфиг тоже), поэтому я не могу проверить, действительно ли изменился способ локали.

Мое решение состояло бы в том, чтобы сохранить выбранную локаль в приложениях onCreate() и сравнить ее с новой локалью в onConfigurationChanged().

  1. Есть ли более элегантный способ?
  2. Почему onConfigurationChanged так себя ведет?
...