棒棒糖套装默认本地不起作用

我有这个方法运行在大多数的Android API版本来设置应用程序使用语言(string等)

protected void setDefaultLocale(Context context, Locale locale) { Locale.setDefault(locale); Configuration appConfig = new Configuration(); appConfig.locale = locale; context.getResources() .updateConfiguration(appConfig, context.getResources().getDisplayMetrics()); System.out.println("trad" + locale.getLanguage()); } @Override protected void onCreate(Bundle savedInstanceState) { SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this); String language = sharedPref.getString("pref_language", "he_IL"); if (!language.equals("")) setDefaultLocale(this, new Locale(language)); super.onCreate(savedInstanceState); } 

在棒棒糖运行设备上使用时,没有什么变化。

有谁知道如何解决这个问题?

Solutions Collecting From Web of "棒棒糖套装默认本地不起作用"

回答上面的工作,但只是语言,当你想使用例如:

 NumberFormat numberFormat = NumberFormat.getCurrencyInstance(Locale.getDefault()); 

修改之前的默认语言环境,不再像以前的Android版本一样工作。

已经改变了语言环境的初始化方式(我不知道为什么,我看了一下API,什么都没说)。

所以改变你初始化你的语言环境的方式,从这里:

 Locale locale = Locale("en_US") 

对此:

 Locale locale = new Locale("en", "US"); 

它就像一个魅力:)

希望这有助于未来的人。

干杯

我注意到在棒棒糖中有类似的行为,但在之前版本的API中没有。

在我的情况下,问题是因为我像你一样设置语言代码和国家代码,但是我的资源文件夹是特定于语言的,只有“values-fr”和“values-es”等。

如果你设置这一行

 String language = sharedPref.getString("pref_language", "he_IL"); 

 String language = sharedPref.getString("pref_language", "he"); 

它是否按预期工作?

我只需要语言代码,所以设置只是为了解决这个问题。

终于find了答案。

答案是用“iw”而不是he_il。

String language = sharedPref.getString(“pref_language”,“iw”);