Я хочу получать информацию в своем классе приложений при изменении языка системы.Мой класс приложения:
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()
.
- Есть ли более элегантный способ?
- Почему
onConfigurationChanged
так себя ведет?