android-以编程方式更改语言和国家/地区

android-以编程方式更改语言和国家/地区,android,runtime,locale,region,Android,Runtime,Locale,Region,我正在开发一个应用程序,允许用户更改应用程序设置中的语言。但只要一些国家有两种或更多的语言,并且一些语言在不止一个国家使用,我就需要使用xx-xx格式。 例如,来自比利时的用户可以选择法语或荷兰语 我使用下一个代码段来更改语言: protected void setLocale() { Resources res = getResources(); DisplayMetrics dm = res.getDisplayMetrics(); Configuration con

我正在开发一个应用程序,允许用户更改应用程序设置中的语言。但只要一些国家有两种或更多的语言,并且一些语言在不止一个国家使用,我就需要使用xx-xx格式。 例如,来自比利时的用户可以选择法语或荷兰语

我使用下一个代码段来更改语言:

protected void setLocale() {
    Resources res = getResources();
    DisplayMetrics dm = res.getDisplayMetrics();
    Configuration conf = res.getConfiguration();
    Locale locale = new Locale(dataManager.getLocale().toLowerCase());
    Locale.setDefault(locale);
    conf.locale = locale;
    res.updateConfiguration(conf, dm);
}
dataManager.getLocale()
返回类似“fr BE”或“nl BE”的
字符串

我有以下资源文件:

值fr/strings.xml
值fr rBE/strings.xml
值nl/strings.xml
values nl rBE/strings.xml

但即使我将locale设置为
nl-BE
,它也会使用
values-nl
目录中的字符串,而不是
values-nl-rBE
中的字符串


因此,我的问题是:“如何使我的应用程序在运行时使用特定语言和地区的资源?”

您应该在
Locale
构造函数的第二个参数中指定国家


构造一个新的区域设置 使用指定的语言和国家代码

例如:

Locale locale = new Locale("nl", "BE");

您应该在
Locale
构造函数的第二个参数中指定国家/地区


构造一个新的区域设置 使用指定的语言和国家代码

例如:

Locale locale = new Locale("nl", "BE");

您应该在
Locale
构造函数的第二个参数中指定国家/地区


构造一个新的区域设置 使用指定的语言和国家代码

例如:

Locale locale = new Locale("nl", "BE");

您应该在
Locale
构造函数的第二个参数中指定国家/地区


构造一个新的区域设置 使用指定的语言和国家代码

例如:

Locale locale = new Locale("nl", "BE");

您是否知道应用程序区域设置会根据设备区域设置自动选择。@Rahultwari我知道,但我的每个活动都会调用
onResume()中的
setLocale()
方法。它可以工作,它使用字符串作为正确的语言,但不使用有关区域的信息。您是否知道应用程序区域设置会根据设备区域设置自动选择。@Rahultwari我知道,但我的每个活动都会调用
onResume()中的
setLocale()
方法。它可以工作,它使用字符串作为正确的语言,但不使用有关区域的信息。您是否知道应用程序区域设置会根据设备区域设置自动选择。@Rahultwari我知道,但我的每个活动都会调用
onResume()中的
setLocale()
方法。它可以工作,它使用字符串作为正确的语言,但不使用有关区域的信息。您是否知道应用程序区域设置会根据设备区域设置自动选择。@Rahultwari我知道,但我的每个活动都会调用
onResume()中的
setLocale()
方法。它可以工作,它使用字符串作为正确的语言,但它不使用有关区域的信息。