检测系统语言更改

时间:2019-06-13 10:42:42

标签: android locale

当系统语言更改时,我想在我的Application类中得到通知。 我的应用程序类:

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)之前的新语言环境 进行比较,则它们会有所不同,但是当我将系统语言环境设置为例如在Android设置应用中,En_US已返回resources.configuration.locale(新配置也返回了En_US),因此我无法检查语言环境的方式是否实际更改。

我的解决方案是将所选语言环境保存在应用程序onCreate()中,并将其与onConfigurationChanged()中的新语言环境进行比较。

  1. 有没有更优雅的方式?
  2. 为什么onConfigurationChanged会表现这种方式?

0 个答案:

没有答案