Save language chosen by user, Android

前端 未结 4 1876
醉话见心
醉话见心 2021-01-14 11:58

How can I change default string.xml? I can change my app to five different languages, but whenever I close the app and reopen it. It goes back to default English.

Is

4条回答
  •  温柔的废话
    2021-01-14 12:17

    you can use following

    public void loadLocale() {
            String langPref = "Language";
            SharedPreferences prefs = getSharedPreferences("CommonPrefs",
                    Activity.MODE_PRIVATE);
            String language = prefs.getString(langPref, "");
            changeLang(language);
        }
    
    public void changeLang(String lang) {
            if (lang.equalsIgnoreCase(""))
                return;
            myLocale = new Locale(lang);
            saveLocale(lang);
            Locale.setDefault(myLocale);
            android.content.res.Configuration config = new android.content.res.Configuration();
            config.locale = myLocale;
            getBaseContext().getResources().updateConfiguration(config,getBaseContext().getResources().getDisplayMetrics());
    
        }
    
    public void saveLocale(String lang) {
            String langPref = "Language";
            SharedPreferences prefs = getSharedPreferences("CommonPrefs",
                    Activity.MODE_PRIVATE);
            SharedPreferences.Editor editor = prefs.edit();
            editor.putString(langPref, lang);
            editor.commit();
        }
    

    and in onCreate()

    @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_change_language);
            loadLocale();
        }
    

提交回复
热议问题