Android 多语言切换, updateConfiguration废弃解决方案
override fun attachBaseContext(newBase: Context?) { if(newBase==null) { super.attachBaseContext(newBase) return } val sp = newBase.getSharedPreferences("share_data", Context.MODE_PRIVATE) val language = sp.getString("language", Locale.getDefault().language) var locale = Locale.getDefault() if (language.equals("en", ignoreCase = true)) { locale = Locale.ENGLISH } else if (language.equals("ko", ignoreCase = true)) { locale = Locale.KOREA } else if (language.equals("zh", ignoreCase = true)) { locale = Locale.SIMPLIFIED_CHINESE } else if (language.equals("zh_TW", ignoreCase = true)) { locale = Locale.TRADITIONAL_CHINESE } else if (language.equals("ja", ignoreCase = true)) { locale = Locale.JAPAN } else if (language.equals("de", ignoreCase = true)) { locale = Locale.GERMANY } else if (language.equals("pt", ignoreCase = true)) { locale = Locale("pt") } else if (language.equals("es", ignoreCase = true)) { locale = Locale("es") } else if (language.equals("fr", ignoreCase = true)) { locale = Locale.FRENCH } else if (language.equals("ru", ignoreCase = true)) { locale = Locale("ru") } else if (language.equals("it", ignoreCase = true)) { locale = Locale.ITALY } Log.d("TAG", "changeAppLanguage: $language") val metrics = newBase.resources.displayMetrics val configuration = newBase.resources.configuration configuration.setLocale(locale) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { super.attachBaseContext(newBase.createConfigurationContext(configuration)); } else { newBase.resources.updateConfiguration(configuration, metrics); super.attachBaseContext(newBase) } }
分类:
kotlin
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】