Я новичок в разработке приложений для Android. Я работаю над приложением, где язык может быть изменен. Пример: с английского на хинди или каннада. Смена языка работает нормально на эмуляторе. Но когда я меняю язык на телефоне Android, он не меняется, если я не изменю язык с Настройки на этот конкретный язык.
Я хотел динамически менять язык в самом приложении вместо перехода к настройкам. Это возможно, или мы должны идти только вышеописанным путем?
P.S. Android-телефон имеет 7.0 нуг
Любая помощь будет высоко ценится. Спасибо.
Это то, что я написал.
private void setLocale(String lang){
Locale locale=new Locale(lang);
locale.setDefault(locale);
Resources resources = getResources();
Configuration configuration = resources.getConfiguration();
DisplayMetrics displayMetrics = resources.getDisplayMetrics();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1){
configuration.setLocale(locale);
} else{
configuration.locale=locale;
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N){
getApplicationContext().createConfigurationContext(configuration);
} else {
resources.updateConfiguration(configuration,displayMetrics);
}
//save data to sharedPreferences
SharedPreferences.Editor editor=getSharedPreferences("Settings",MODE_PRIVATE).edit();
editor.putString("My_Lang",lang);
editor.apply();
}
public void showChangeLanguageDialog()
{
final String[] listItems={"हिंदी","ಕನ್ನಡ","मराठी","தமிழ்","اردو","English"};
AlertDialog.Builder mBuilder=new AlertDialog.Builder(MainActivity.this);
mBuilder.setTitle("Change Language..");
mBuilder.setSingleChoiceItems(listItems, -1, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
switch (which)
{
case 0: //Hindi
setLocale("hi");
recreate();
break;
case 1://Kannda
setLocale("kn");
recreate();
break;
case 2://English
setLocale("en");
recreate();
break;
}
//dismiss dialog when language selected
dialog.dismiss();
}
});
AlertDialog mDialog=mBuilder.create();
//show create dialog
mDialog.show();
}
//showChangeLanguageDialog is called on button click