Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/215.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
Android 语言不会改变_Android_Locale - Fatal编程技术网

Android 语言不会改变

Android 语言不会改变,android,locale,Android,Locale,我试图通过编程设置我的应用程序的语言,但它只改变了我的一些字符串。我有一个values文件夹,其中是英文的默认字符串。然后我自己创建了values fr并将每个字符串翻译成法语,所以现在我有了(英语)default values文件夹,其中有我的english strings.xml,values fr文件夹,其中有我的french strings.xml 下面是我用来更改onCreate和onResume语言的代码: String languageToLoad = "fr"; // your

我试图通过编程设置我的应用程序的语言,但它只改变了我的一些字符串。我有一个values文件夹,其中是英文的默认字符串。然后我自己创建了values fr并将每个字符串翻译成法语,所以现在我有了(英语)default values文件夹,其中有我的english strings.xml,values fr文件夹,其中有我的french strings.xml

下面是我用来更改onCreate和onResume语言的代码:

String languageToLoad  = "fr"; // your language
Locale locale = new Locale(languageToLoad); 
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config, 
getBaseContext().getResources().getDisplayMetrics());
但它只更改了一些字符串,例如,我的首选项中的所有字符串都被更改,但主活动中的字符串保持不变。知道是什么原因吗?

试试这个:

Resources standardResources = getApplicationContext();
DisplayMetrics metrics = standardResources.getDisplayMetrics();
Configuration config = new Configuration(standardResources.getConfiguration());
config.locale = new Locale("fr") // change
standardResources.updateConfiguration(config, metrics);
这样做:

Locale localeFR = new Locale("fr", "FR");
Resources res = getResources();
DisplayMetrics dm = res.getDisplayMetrics();
Configuration conf = res.getConfiguration();
conf.locale = localeFR;
res.updateConfiguration(conf, dm);
Intent refresh = new Intent(MyActivity.this, MyActivity.class);
startActivity(refresh);
finish();

设置应用程序的区域设置后,需要重新启动“活动”以使更改可见。

在展开“活动”视图之前是否调用了该代码?请删除
getBaseContext()
。尝试
getResources()…
而不是
getBaseContext().getResources()…
是,它在onCreate和onResume中都被调用