我想更改应用程序语言,然后在所有活动中都记得使用。没有自定义库怎么办?
答案 0 :(得分:0)
这是我的第一个自我回应,但我想与需要它的每个人分享我自己的语言改变方式。您可以在下面看到简单的步骤:
在活动中添加两个方法,以更改lang:
private void changeLang(String lang) {
if (lang.equalsIgnoreCase(""))
return;
Locale myLocale = new Locale(lang);
Locale.setDefault(myLocale);
android.content.res.Configuration config = new android.content.res.Configuration();
config.locale = myLocale;
this.getResources().updateConfiguration(config, this.getResources().getDisplayMetrics());
sp = Objects.requireNonNull(getActivity()).getSharedPreferences("app_data", 0);
saveLocale(lang);
}
private void saveLocale(String lang) {
String langPref = "Language";
SharedPreferences.Editor editor = sp.edit();
editor.putString(langPref, lang).apply();
}
在changeLang
方法中,您必须使用本地标识符。
最后,您必须在setContentView(...)
之前在每个活动中检查您的sharedPreferences:
sp = getSharedPreferences("app_data", 0);
super.onCreate(savedInstanceState);
String lang = sp.getString("Language", Locale.getDefault().getLanguage());
Locale locale = new Locale(lang);
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getResources().updateConfiguration(config,getResources().getDisplayMetrics());
我同意我的方法可能太简单,也可能创建错误,但这对我有帮助,因此我决定与您分享。也许smb将在他或她的项目中使用它。祝你好运:)