在Android应用程序中更改语言时应用程序状态更改

时间:2017-03-16 11:05:31

标签: android localization sharedpreferences android-6.0-marshmallow android-context

我们在Android应用程序中使用了总共​​6种语言,用户可以从中选择。我们以编程方式设置语言环境。语言是 英语,印地语,泰米尔语,Telegu,卡纳达语,马拉雅拉姆语,马拉地语。

使用下面的代码我们更改应用程序的语言。

locale = new Locale(lang);
Locale.setDefault(locale);
Configuration conf = new Configuration(config);
conf.locale = locale;

getApplicationContext().getResources().updateConfiguration(conf,getBaseContext().getResources().getDisplayMetrics());

当我们更改印地语和英语之间的语言时,app可以从共享首选项中获取数据,但对于其他语言,它会为同一查询返回null。请帮忙

更新1:以下是从共享首选项中检索数据的代码

  SharedPreferences sharedPrefs = context.getSharedPreferences(context.getString(R.string.shared_prefs_key), Context.MODE_PRIVATE);
  String value = sharedPrefs.getString(key, null);

1 个答案:

答案 0 :(得分:0)

由于您使用字符串值从sharedpreferences R.string.shared_prefs_key获取数据,这就是问题发生的原因,因为密钥将在不同的语言字符串中更改。由于数据是在不同的密钥中存储的,因此它为其他语言密钥提供了null。

将其更改为如下所示的常量值:

SharedPreferences sharedPrefs = context.getSharedPreferences("<your key>", Context.MODE_PRIVATE);