我正在创建一个支持印地语和古吉拉特语的应用程序。我正在从我的应用程序设置屏幕设置应用程序语言。就像我给了用户一个选项来选择英语/印地语/古吉拉特语中的一种语言。
我在单选按钮选择的基础上设置区域设置。我将选择保存在持久性中,并在此基础上更改应用程序中所有文本视图的字体。
一切正常......但它在应用程序运行之间将语言更改为英语。假设我从我的设置屏幕中选择了印地语并运行我的应用程序。10-15 分钟后突然从“values”目录中获取文本值,而不是从“values-hi”中获取文本值。我真的不明白为什么它取自默认值目录。我的应用程序动态数据工作正常。它以印地语出现,甚至我的应用程序可绘制对象也可以正常工作,但问题只是它从“值”目录中获取值。
当用户从我的应用程序设置屏幕中选择语言时使用此方法。
public void setLocale(Context context, String lang) {
Locale myLocale = new Locale(lang);
Resources res = context.getResources();
DisplayMetrics dm = res.getDisplayMetrics();
Configuration conf = res.getConfiguration();
conf.locale = myLocale;
res.updateConfiguration(conf, dm);
}
该方法用于在ONCREATE METHOD中设置文本视图的字体
public static void setTypeface(TextView textView, Context context) {
SharedPreferences sp = context.getSharedPreferences("language_selection", context.MODE_PRIVATE);
String language = sp.getString("language", "English");
if (language != null) {
if (language.equalsIgnoreCase("Hindi")) {
textView.setTypeface(Typeface.createFromAsset(context.getAssets(), "gargi.ttf"));
}
if (language.equalsIgnoreCase("Gujrati")) {
textView.setTypeface(Typeface.createFromAsset(context.getAssets(), "SHRUTI.TTF"));
}
}
}