更改Android应用程序的语言
问题描述:
我试图添加按钮来更改应用程序中的语言,但 将语言更改为阿拉伯语后, 当我退出应用程序时,它将返回英语。更改Android应用程序的语言
public class Language extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_language);
findViewById(R.id.BTN_ar).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
setLocale("ar");
}
});
findViewById(R.id.BTN_en).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
setLocale("en");
}
});
}
@SuppressWarnings("deprecation")
public void setLocale(String lang) {
Locale myLocale = new Locale(lang);
DisplayMetrics dm = getResources().getDisplayMetrics();
Configuration conf = getResources().getConfiguration();
conf.locale = myLocale;
getResources().updateConfiguration(conf, dm);
Intent refresh = new Intent(this, MainActivity.class);
startActivity(refresh);
finish();
}
}
答
你必须保存更改语言SharedPreference,像下面的例子:
Resources res = getApplicationContext().getResources();
// Change locale settings in the app.
DisplayMetrics dm = res.getDisplayMetrics();
android.content.res.Configuration conf = res.getConfiguration();
conf.locale = new Locale(language_code);
res.updateConfiguration(conf, dm);
//save to shared preference
UtilFunctions.changeLanguage(HomeActivity.this, language_code);
public static void changeLanguage(Context context, String languageCode) {
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
SharedPreferences.Editor editor = preferences.edit();
editor.putString("lang", languageCode);
editor.apply();
}
public static String getCurrentLanguage(Context context) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
return prefs.getString("lang", "");
}
答
您应该将所选语言存储在SharedPreferences
上,并在创建的活动上检查它。
使用'SharedPreference' – Ibrahim