Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android Studio:以编程方式切换资源中的字符串值,而不更改区域设置_Java_Android_Xml_Android Studio - Fatal编程技术网

Java Android Studio:以编程方式切换资源中的字符串值,而不更改区域设置

Java Android Studio:以编程方式切换资源中的字符串值,而不更改区域设置,java,android,xml,android-studio,Java,Android,Xml,Android Studio,对于我在Android Studio中制作的移动应用程序,我希望用户能够更改应用程序的语言。想法如下:我有多个strings.xml文件(用于不同的语言),当语言更改时,我想切换到一个特定的文件(例如,如果语言更改为德语,则切换到file strings.xml(de))。然而,我似乎找不到一种方法以编程方式切换到另一个strings.xml文件。我能在网上找到的唯一解决方案是更改系统的语言环境,但我宁愿避免这个选项。是否有任何方法可以通过编程方式更改strings.xml文件,而不更改区域设置

对于我在Android Studio中制作的移动应用程序,我希望用户能够更改应用程序的语言。想法如下:我有多个strings.xml文件(用于不同的语言),当语言更改时,我想切换到一个特定的文件(例如,如果语言更改为德语,则切换到file strings.xml(de))。然而,我似乎找不到一种方法以编程方式切换到另一个strings.xml文件。我能在网上找到的唯一解决方案是更改系统的语言环境,但我宁愿避免这个选项。是否有任何方法可以通过编程方式更改strings.xml文件,而不更改区域设置

提前谢谢

我建议使用图书馆

此库使在运行时更改应用程序的语言变得非常简单。您的所有活动都需要实现
本地化活动
,该活动扩展了
AppCompatActivity
。之后,您可以通过调用
setLanguage(“en”)来切换应用程序中使用的语言
在github页面上可以找到包含以下示例代码和更多信息的示例项目


关于以编程方式更改语言,可能还包含一些有用的答案。

由于Sergey Glotov的链接,我使用了updateConfiguration方法,如下所示:

Locale locale2 = new Locale("en");
Locale.setDefault(locale2);

Configuration config2 = new Configuration();
config2.locale = locale2;

getBaseContext().getResources().updateConfiguration(
                        config2,getBaseContext().getResources().getDisplayMetrics());
现在应用程序正在使用字符串en资源文件!:D


但是,
Resources.getSystem().getConfiguration().locale.getDisplayLanguage()
是“法语”,所以我的语言环境没有改变。这就是你想要的吗?

可能的重复:这个问题是关于更改区域设置以更改语言,我希望避免。可能的重复不是关于更改系统区域设置,
locale.setDefault()
只更改应用程序中的区域设置。只是说:你的应用程序不应该提供此功能。我不知道你为什么想要这个功能,你可能有很好的理由,但应用程序应该始终使用手机的系统语言。这是用户选择的语言,因此他或她希望所有应用程序都使用该语言。