【发布时间】:2016-04-06 07:06:30
【问题描述】:
我想做的是在应用内为用户提供简单的语言更改。当前视图的文本以及 Back Stack 应替换为所选语言的字符串。我刚刚编写了以下代码 sn-p 可以很好地完成他的工作:
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 设置中更改设备范围内的语言来触发?
在我的应用程序中更改语言后,是否有任何其他方法可以刷新每个活动活动(当前和返回堆栈)?
【问题讨论】:
-
从这里 android:configChanges="locale|layoutDirection" 删除“locale”后试试,它会起作用。
-
我很害怕,但是从 AndroidManifest 活动属性中删除“语言环境”对我来说并不能解决这个问题。 @LoveGrag
-
你解决了吗?
标签: java android configuration locale