传递给Location构造函数的参数可能是错误的:
第二个应该是国家,第三个应该是变体。
我正在尝试覆盖应用程序中的区域设置配置。但是,我无法区分语言和它们的地区。
我正在尝试以下代码来覆盖区域设置。
正在获取要覆盖的区域设置。
示例:"de_de"、"de_AT"
public static Locale getLocaleFromString(@NonNull final String locale) {
String[] split = locale.split("_");
if (split != null || split.length > 1) {
String language = split[0];
String country = split[1];
return new Locale(language, language, country);
}
return Locale.getDefault();
}
我的资源文件夹的结构是:
values/strings.xml (default strings)
values-de-rDE/strings.xml
values-de-rAT/strings.xml
如果我定义了值de/strings.xml,应用程序就会开始从这个文件夹中读取。这意味着区域设置覆盖在应用程序中有效,但在某些方面,安卓系统无法从特定区域的文件夹中读取字符串。
(我的设备语言是英语。)
如有任何帮助,我们将不胜感激。
第二个应该是国家,第三个应该是变体。
所以getLocaleFromString
应该是这样的:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Resources res = getResources();
DisplayMetrics dm = res.getDisplayMetrics();
Configuration conf = res.getConfiguration();
conf.locale = getLocaleFromString("de_DE");
res.updateConfiguration(conf, dm);
setContentView(R.layout.activity_main);
}
public static Locale getLocaleFromString(@NonNull final String locale) {
String[] split = locale.split("_");
if (split != null || split.length > 1) {
String language = split[0];
String country = split[1];
return new Locale(language, country);
}
return Locale.getDefault();
}
}