问题描述:创建了一个按钮用于切换中英文,点击按钮刷新了应用但语言没有切换.修改系统语言和切换语言.
解决过程:因为语言确实能切换,所以主要考虑按钮切换功能是否有问题.自己首先想的是语言总是跟着系统语言,是否是因为config中设置语言的时候出了问题.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { config.setLocale(getLocale(language)) } else { config.locale = getLocale(language) }
将其中自己写的方法getLocale修改为Locale.ENGLISH后还是不生效,在getLocale中打上log发现确实执行了,推断问题不是发生在这处.之后因为看到updateConfiguration被废弃了考虑版本原因,修改后发现也没什么作用.后来搜百度发现可能是导入的Context的有问题.
Android7.0及之后版本,使用了LocaleList,Configuration中的语言设置可能获取的不同,而是生效于各自的Context.
因为我的按钮所在布局是定义在Fragment中的,然后我把方法实现都写在onActivityCreated中,所以使用了全局定义的Context,只要把Button的实现方法移到onCreate,调用view即可解决.看来全局Context也不是十全十美,另外发现自己遇到与Context的问题好几回了,有机会好好了解一下.