【问题标题】:Android: Programmatically setting Locale doesn't fetch values from values-ta/string.xmlAndroid:以编程方式设置区域设置不会从 values-ta/string.xml 中获取值
【发布时间】:2015-01-31 18:50:48
【问题描述】:

我有以下代码:

locale = new Locale(loc);
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
Resources resources = getResources();
resources.updateConfiguration(config, resources.getDisplayMetrics());
Intent intent = new Intent(getActivity(), Settings.class);
getActivity().finish();
startActivity(intent);

在我的 Preference 设置屏幕中,我获取了 ListPreference 的值和调用上述代码 sn-p 的值的 onChange。

但是,调用发生了,但字符串不会更改为“ta”语言。这是在 Settings Activity 调用的 PreferenceFragment 中完成的。

应用程序中的文本会将语言更改为适当的语言,但工具栏上的文本不会更改。

另外需要注意的是 - 在设置活动中更改区域设置仅反映在该活动中,而不是在整个应用程序中。这是如何实现的?

有人可以指导吗?

【问题讨论】:

    标签: android android-fragments localization


    【解决方案1】:

    当在 Android 中创建任何与文本相关的内容时,它会在创建时检查区域设置并使用该区域设置来查找正确的文本。 如果您随后在运行时更改语言环境,则文本已经创建(使用旧语言环境),因此不会更改为新语言环境。但是如果您在更改语言环境后打开一个新的活动/片段,它将使用新的语言环境。

    当我在我的应用程序中实现语言设置时,我也遇到了这个问题,为了解决这个问题,我最终更改了语言环境,将新语言环境保存在 SharedPreferences 中,然后重新启动整个应用程序,并在你的第一个活动的 OnCreate ,我使用保存在 SharedPreferences 中的语言环境来更改我的应用程序的语言环境。 (这必须在您在应用中设置任何类型的文本之前完成)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-14
      • 2018-03-16
      • 1970-01-01
      • 2014-06-14
      • 2016-07-07
      相关资源
      最近更新 更多