我想要做的是为应用内的用户提供简单的语言更改。应使用所选语言的字符串替换当前视图的文本以及后退堆栈。我刚刚编写了以下代码片段来完成他的工作:
private void setLocale(Locale locale) {
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config,
getBaseContext().getResources().getDisplayMetrics());
}
经过一番研究后我发现,在语言环境配置发生变化后,每个活动都应该自动刷新 - 但在我的情况下并不是这样。当前视图以及整个Back Stack仍然是默认语言环境 - 它们只是在重新打开活动后才会更改。
我已将属性android:configChanges="locale|layoutDirection"
添加到我的AndroidManifest.xml
,以便不会做这个伎俩。
你们有什么建议吗?或者我是否有错误的目的来解决这个问题呢?
修改
好吧,似乎OnConfigurationChanged()
只能通过在Android设置中更改设备范围内的语言来触发?
在我的应用程序中更改语言后,还有其他方法可以刷新每个活动活动(当前和后台堆栈)吗?
答案 0 :(得分:0)
我认为如果您创建一个具有此事件过滤器的Receiver
<action android:name="android.intent.action.LOCALE_CHANGED"/>
将在设备区域设置更改时为您提供事件,然后您可以刷新所需的所有活动。如需刷新,您可以查看this。
希望它能解决你的问题。