Reputation: 31
I am trying to add the button to change the language in application but after changing the language to Arabic, when i exit the application it's returns to english.
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();
}
}
Upvotes: 1
Views: 106
Reputation: 34
You have to save the changed language in SharedPreference, like the below example :
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", "");
}
Upvotes: 1
Reputation: 5251
You should store selected language on SharedPreferences
and check it out on activity created.
Upvotes: 1