先上代码
图一:单选框选择语种后点击确定执行的代码
图二:设置Locale语言的执行代码,利用Log打印设置完后的locale语言的代码
图三:initVariables(在onCreate中最先执行的)中利用Log打印当前locale语言的代码
图四:打印的Log,分别是按英语、繁体、简体三次选择打印的结果
问题:当我选择“英语”后,Log也打印的是US,说明locale设置的没问题。但每次刷新该Activity(网上说设置完locale需要刷新界面才能加载对应文件夹的strings.xml),再获取locale时,locale又变成和系统语言一样的编号了,怎么改都改不过来。所以导致App一直加载的是values-zh-rCN中的strings.xml,无法实现语言的切换功能。
一直想不通,做了个demo,一样的代码(除了包名其他一样,strings.xml也都一样),demo可以切换,一放进项目里就不行。
请大佬们指教,实在是想不通究竟为什么
https://blog.csdn.net/xunmeng_93/article/details/78632210
假如你的 App 存在某个 activity 和当前设置页 activity 不在一个 task 栈内的话(比如你从某个通知页用 FLAG_ACTIVITY_NEW_TASK 启动的一个 activity),就不会应用语言设置。
推荐看这一篇:升级appcompact1.2后多语言切换无效问题,给出了解决方案和出现问题的分析