如何在android

时间:2016-12-22 04:58:47

标签: java android android-actionbar locale android-sharedpreferences

我创建了一个有权更改语言的应用程序。我使用SharedPreference来存储更改后的语言。然后我用它来改变语言。

这些是我的步骤,

public class SaveSharedPreference {

    static final String PREF_LANGUAGE="language";

    static SharedPreferences getSharedPreferences(Context ctx) {
        return PreferenceManager.getDefaultSharedPreferences(ctx);
    }    

    public static void setLanguage(Context context,String language){
        SharedPreferences.Editor editor = getSharedPreferences(context).edit();
        editor.putString(PREF_LANGUAGE,language);
        editor.commit();
    }

    public static String getLaguage(Context context){
        return getSharedPreferences(context).getString(PREF_LANGUAGE,"");
    }

}

SaveSharedPreference 类可帮助我存储和获取更改后的语言。

一旦我更改了语言,我就会使用以下步骤获取并更改语言。

if (SaveSharedPreference.getLaguage(context).length()!=0) {

        if(SaveSharedPreference.getLaguage(context).toString().equals("si")){
             String languageToLoad = SaveSharedPreference.getLaguage(context); // your language
             Locale locale = new Locale(languageToLoad);
             Locale.setDefault(locale);
             Configuration config = new Configuration();
             config.locale = locale;
             getBaseContext().getResources().updateConfiguration(config,
                    getBaseContext().getResources().getDisplayMetrics());
        } else {
            String languageToLoad = SaveSharedPreference.getLaguage(context).toString(); // your language
            Locale locale = new Locale(languageToLoad);
            Locale.setDefault(locale);
            Configuration config = new Configuration();
            config.locale = locale;
            getBaseContext().getResources().updateConfiguration(config,
                    getBaseContext().getResources().getDisplayMetrics());
        }
} else {    
    String languageToLoad = "en"; // your language
    Locale locale = new Locale(languageToLoad);
    Locale.setDefault(locale);
    Configuration config = new Configuration();
    config.locale = locale;
    getBaseContext().getResources().updateConfiguration(config,
                    getBaseContext().getResources().getDisplayMetrics());
}

我把它放在 onResume()方法上。

@Override
    protected void onResume() {
        super.onResume();
}

这些是我的语言的string.xml文件,

值\ strings.xml中

<resources>
    <string name="label_dash_board_name">My dashboard</string>
</resources>

SI \ strings.xml中

<resources>
    <string name="label_dash_board_name">දත්ත පුවරුව</string>
</resources>    

更改语言后我遇到了问题。我可以在EditTextsTextViewsButtons中更改语言。但我无法改变行动栏中的语言。

当我关闭并再次启动应用程序时,我可以看到语言发生了变化。

有任何想法吗?

1 个答案:

答案 0 :(得分:2)

setTitle方法可能适合你---

setContentView(R.layout.activity_main);
// Activity title will be updated after the locale has changed in Runtime
setTitle(R.string.app_name);