You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android中config.locale已被废弃,该如何正确为Configuration设置Locale?

解决方案

config.locale 从API 17(Android 4.2)开始被官方标记废弃,需根据运行设备的API层级适配写法,修改完成后还要主动把配置更新到Context资源才能生效,完整示例代码如下:

val locale = Locale(country)
Locale.setDefault(locale)
val config: Configuration = baseContext.resources.configuration

// 替换原废弃的赋值语句
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
    // API 24及以上优先调用setLocale,内部自动适配LocaleList机制
    config.setLocale(locale)
    // 若有多个语言优先级需求,可改用以下写法:
    // config.setLocales(LocaleList(locale, 其他备选Locale))
} else {
    // 低版本用原有赋值逻辑,加注解忽略废弃警告即可
    @Suppress("DEPRECATION")
    config.locale = locale
}

// 必须调用该方法将改动应用到资源配置,否则自定义Locale不会生效
baseContext.resources.updateConfiguration(config, baseContext.resources.displayMetrics)

补充说明

  • API 24及以上系统引入了多语言优先级列表LocaleList,如果只需要设置单一默认Locale,直接调用setLocale()即可,方法内部会自动把传入的Locale设为列表最高优先级项
  • 如果是全局应用自定义Locale的场景,建议在Application的onConfigurationChanged回调中同步执行一次Locale配置更新,避免系统配置变更(比如横竖屏切换、系统语言修改)后自定义配置被覆盖

内容的提问来源于stack exchange,提问作者sooyeon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 18:27:03