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

更新Locale后ActionBar未同步更新的Android技术问题

解决ActionBar切换Locale后未更新的问题

方案一:重启当前Activity

调用setApplicationLocales后,重启Activity让系统重新加载本地化资源,确保所有UI元素(包括ActionBar)同步更新:

修改setNewLocale方法:

private fun setNewLocale(tags: String) {
    val appLocale = LocaleListCompat.forLanguageTags(tags)
    AppCompatDelegate.setApplicationLocales(appLocale)
    // 重启当前Activity,刷新所有本地化内容
    recreate()
}

方案二:手动更新ActionBar标题

如果不想重启Activity,可以直接获取当前语言环境下的标题文本,手动设置给ActionBar:

private fun setNewLocale(tags: String) {
    val appLocale = LocaleListCompat.forLanguageTags(tags)
    AppCompatDelegate.setApplicationLocales(appLocale)
    
    // 手动更新ActionBar标题
    supportActionBar?.title = getString(R.string.app_name)
}

补充说明

  • 若项目中使用自定义Toolbar而非系统默认ActionBar,直接通过Binding获取Toolbar后设置标题即可:
    binding.toolbar.title = getString(R.string.app_name)
    
  • AppCompatDelegate.setApplicationLocales仅全局设置应用Locale,已创建的Activity不会自动刷新UI,因此需要手动触发更新或重启Activity。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 01:07:06