gpt4 book ai didi

未加载 Android 语言环境文件

转载 作者:行者123 更新时间:2023-12-02 12:58:35 26 4
gpt4 key购买 nike

该应用程序支持 os 8.0+

我添加了 values-ar支持 strings.xml 的文件夹.如果我将手机设置的语言更改为阿拉伯语,应用程序会加载正确的资源。如果我在 Application 中设置运行时的默认语言环境类,它无法加载特定的 ("ar") 资源。

d

这是我更改 conf 的方式(在 Application 类上):

fun changeDefaultLocale() {
Locale.setDefault(Locale("ar")
val configuration = resources.configuration
configuration.setLocale(locale)
this.createConfigurationContext(configuration)
}

我尝试过的:

  • 重命名 values-arvalues-ar-rEG
  • 添加resConfigs "en", "ar"app/build.gradle
  • 添加android:configChanges="locale"Manifest/<application
  • 使用Locale("ar","AE")Locale("ar","EG")

调用上面的命令后,我在行上设置了一个断点 changeDefaultLocale()乐趣:

enter image description here

为什么它没有加载正确的资源文件?我再说一遍,如果我从手机设置中更改它,它会正常工作。

更新

使用@Nurbol 响应我更新了 BaseActivity如下所示,它工作正常。我现在的问题是:

Activity A -> Activity B (here I switch the locale) ,然后如果我按回键,系统恢复 Activity A , 它具有旧的配置和旧的语言环境。如何克服?

override fun attachBaseContext(base: Context) {
super.attachBaseContext(updateBaseContextLocale(base))
}

private fun updateBaseContextLocale(context: Context): Context {
val locale = Locale("ar")
Locale.setDefault(locale)
return updateResourcesLocale(context, locale)
}

@TargetApi(Build.VERSION_CODES.N)
private fun updateResourcesLocale(context: Context, locale: Locale): Context {
val configuration = context.resources.configuration
configuration.setLocale(locale)
return context.createConfigurationContext(configuration)
}

最佳答案

不建议以编程方式更改区域设置。因为它是 buggy 。如果你真的想改变它。在 setContentView() 之前,您应该在每个 Activity 的 onCreate() 中调用 changeDefaultLocale() 方法。您可以简单地创建执行此操作的 BaseActivity 类,并将其用作每个 Activity 的父类。

abstract class BaseActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

// Change locale settings in the app.
val dm = resources.displayMetrics
val conf = resources.configuration
val lang = "ar"

conf.setLocale(Locale(lang.toLowerCase())) // API 17+ only.

resources.updateConfiguration(conf, dm)
}
}

关于未加载 Android 语言环境文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56722436/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com