spy*_*yfx 6 java configuration android locale
我想要做的是在应用程序中为用户提供简单的语言更改。当前视图的文本以及 Back Stack 应替换为所选语言的字符串。我刚刚编写了以下代码片段,它可以很好地完成他的工作:
private void setLocale(Locale locale) {
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config,
getBaseContext().getResources().getDisplayMetrics());
}
Run Code Online (Sandbox Code Playgroud)
经过一番研究,我发现,在更改语言环境配置后,每个活动都应该自动刷新自己 - 但在我的情况下不是这样。当前视图以及整个 Back Stack 仍然具有默认语言环境 - 它们只是在重新打开 Activity 后发生变化。
我已经将属性添加android:configChanges="locale|layoutDirection"到我的,AndroidManifest.xml所以不会成功。
大家有什么建议吗?或者我是否有错误的目的来解决这个问题?
编辑
好吧,似乎OnConfigurationChanged()只能通过在 android 设置中更改设备范围内的语言来触发?
更改应用程序中的语言后,是否还有其他方法可以刷新每个活动活动(当前和返回堆栈)?