我使用以下代码以编程方式更改应用的语言环境:
Locale.setDefault(locale);
Configuration config = getBaseContext().getResources().getConfiguration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config,
getBaseContext().getResources().getDisplayMetrics());
recreate();
此活动和之后的所有活动的工作方式都像魔术一样,但是如果我使用手机的后退功能,则最后的活动将以旧的语言环境重新使用。
有什么方法可以使上一个活动无效或对其进行强制重新创建?
答案 0 :(得分:0)
此帖子解决了问题: How to recreate previous activity?
我的最终解决方案是:
@Override
public void onResume() {
super.onResume();
if(!currentLanguage.equals(getResources().getConfiguration().locale.getLanguage())) {
recreate();
}
}
和onCreate()
中的
currentLanguage = getResources().getConfiguration().locale.getLanguage();
(应该搜索更多)。