相关疑难解决方法(0)

强制不同的区域设置仅适用于后堆栈中的顶级活动

我遇到了一个关于应用程序本地化的小问题:

情况是这样的 - 我为我的用户提供了始终使用挪威语应用程序的选项,无论系统语言如何。

它在大多数情况下都工作得很好(我进入设置,选中复选框以强制挪威语,按“后退”,之前的活动以挪威语显示 - 同样的“相反”),但是 - 仅语言发生变化似乎正确更新(重新加载资源)我的“后堆栈”中的第一个活动。

举例说明一个典型场景:

用户启动应用程序,并看到主要活动(英文)。从那里,他选择第二个活动(也是英语)。然后,他进入设置(从第二个活动的菜单中)并将偏好设置为强制挪威语。

然后,当他返回时,第二个活动会正确更新并以挪威语显示(到目前为止一切顺利)。然而,当他再次按“返回”返回主活动时,仍然以英文显示......

如果他返回并再次启动应用程序,主要活动将以挪威语正确显示......

这里有聪明人建议我应该做什么吗?

相关源码:

每个活动中包含的用于设置显示语言的代码:

在 onCreate 中:Globals.locale_default = Locale.getDefault().getDisplayLanguage();

public void onStart() {
    super.onStart();
    forceNorwegian = settings.getBoolean(getString(R.string.pref_key_forceNorwegian).toString(), false);
       if (forceNorwegian) {
           languageCheck("no");
       } else {
            Globals.locale = null;
            languageCheck(Globals.locale_default);
       }
}

public void languageCheck(String lang) {
    Globals.locale = new Locale( lang );
    // Check the current system locale and change it to Norwegian if it's not already the default
    Globals.checkLocale( this );
    if (Globals.language_changed) …
Run Code Online (Sandbox Code Playgroud)

configuration android locale

5
推荐指数
1
解决办法
3931
查看次数

标签 统计

android ×1

configuration ×1

locale ×1