Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android-语言环境转换器_Java_Android_Kotlin - Fatal编程技术网

Java Android-语言环境转换器

Java Android-语言环境转换器,java,android,kotlin,Java,Android,Kotlin,我在更改Locale时遇到了一种奇怪的行为。对于每个Android API级别,一切都很正常。 正在尝试更改我的应用程序的区域设置,但它不再工作。 当设置新的Locale->AttachBaseContext->Recreate Activity时,一切似乎都很好,但最后我只看到了English中的字符串 您给出了哪些建议,或者这可能是最新的安卓Studio 3.5 Canary 9出现了问题 这是我的自定义上下文包装: class MyContextWrapper(base: Context)

我在更改
Locale
时遇到了一种奇怪的行为。对于每个
Android API级别
,一切都很正常。 正在尝试更改我的应用程序的
区域设置
,但它不再工作。 当设置新的
Locale->AttachBaseContext->Recreate Activity
时,一切似乎都很好,但最后我只看到了
English
中的字符串

您给出了哪些建议,或者这可能是最新的安卓Studio 3.5 Canary 9出现了问题

这是我的自定义上下文包装:

class MyContextWrapper(base: Context) : ContextWrapper(base) {
    companion object {
        @TargetApi(Build.VERSION_CODES.N)
        fun wrap(contextt: Context, newLocale: Locale): ContextWrapper {
            var context = contextt
            val res = context.resources
            val configuration = res.configuration
            when {
                VersionUtils.isAfter24 -> {
                    configuration.setLocale(newLocale)
                    val localeList = LocaleList(newLocale)
                    LocaleList.setDefault(localeList)
                    configuration.locales = localeList
                    context = context.createConfigurationContext(configuration)
                }
                VersionUtils.isAfter17 -> {
                    configuration.setLocale(newLocale)
                    context = context.createConfigurationContext(configuration)
                }
                else -> {
                    @Suppress("DEPRECATION")
                    configuration.locale = newLocale
                    @Suppress("DEPRECATION")
                    res.updateConfiguration(configuration, res.displayMetrics)
                }
            }
            return ContextWrapper(context)
        }
    }
}

这是AppCompat 1.1.0-alpha03中的一个bug,最后用最新的alpha
AppCompat 1.1.0-alpha04解决了它

我花了3天半的时间去理解由于多次重构而出现的问题,然后才注意到这种行为

当您是
早期alpha测试仪时会发生这种情况


作为建议,因为这在我之前发生过(不同的bug),所以在继续改进和重构应用程序之前,请确保在更新到另一个alpha时测试您正在使用的所有功能。:)

这是AppCompat 1.1.0-alpha03中的一个bug,最后用最新的alpha
AppCompat 1.1.0-alpha04解决了它

我花了3天半的时间去理解由于多次重构而出现的问题,然后才注意到这种行为

当您是
早期alpha测试仪时会发生这种情况


作为建议,因为这在我之前发生过(不同的bug),所以在继续改进和重构应用程序之前,请确保在更新到另一个alpha时测试您正在使用的所有功能。:)

这是Androidx 1.1.0上报告的错误,请在此处找到解决方案:Androidx 1.1.0上报告的错误,请在此处找到解决方案: