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

我有这个方法运行在大多数的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); } 

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

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

  • 原色(有时)变得透明
  • DatePicker与android 5.0的三星崩溃
  • 使用带有ChangeImageTransform的共享元素过渡在两个活动之间animationImageView
  • 在除Android L之外的所有Android版本上获取TypeNotPresentException,后面跟着ClassNotFoundException或NoClassDefFoundError
  • 无法在Android Lollipop 5.0中获取前台活动名称
  • ActionBarActivity后退按钮不会从后台popup
  • Android 5.0 Lollipop和4.4 KitKat忽略了我的WiFi网络,enableNetwork()没用
  • 在更新到最新的appcompat和支持库之后发生DexIndexOverflowException问题
  • 回答上面的工作,但只是语言,当你想使用例如:

     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”);