2

我正在创建一个支持印地语和古吉拉特语的应用程序。我正在从我的应用程序设置屏幕设置应用程序语言。就像我给了用户一个选项来选择英语/印地语/古吉拉特语中的一种语言。

我在单选按钮选择的基础上设置区域设置。我将选择保存在持久性中,并在此基础上更改应用程序中所有文本视图的字体。

一切正常......但它在应用程序运行之间将语言更改为英语。假设我从我的设置屏幕中选择了印地语并运行我的应用程序。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"));
        }
    }
}
4

1 回答 1

1

尝试以Language这种方式设置您的选择:

Locale locale = new Locale("YourSelectedLang");
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config,
    getBaseContext().getResources().getDisplayMetrics());
于 2014-03-01T08:58:01.020 回答