android:`recreate()`不仅如此,而且最后一个活动

时间:2019-07-07 22:54:05

标签: android locale

我使用以下代码以编程方式更改应用的语言环境:

Locale.setDefault(locale);
Configuration config = getBaseContext().getResources().getConfiguration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config,
       getBaseContext().getResources().getDisplayMetrics());
recreate();

此活动和之后的所有活动的工作方式都像魔术一样,但是如果我使用手机的后退功能,则最后的活动将以旧的语言环境重新使用。

有什么方法可以使上一个活动无效或对其进行强制重新创建?

1 个答案:

答案 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();

(应该搜索更多)。