Ответ 1
Попробуйте изменить это:
Locale localeEn = new Locale("en_US");
Locale.setDefault(localeEn);
к этому
String language = "en";
String country = "US";
Locale locale = new Locale(language , country);
Я использую этот код ниже, чтобы изменить свой язык приложения при нажатии кнопки (например, с французского на английский), он отлично работает на Android 4.0 +, но на 5.0 он этого не делает.
Locale localeEn = new Locale("en_US");
Locale.setDefault(localeEn);
Configuration configEn = new Configuration();
configEn.locale = localeEn;
getApplicationContext().getResources().updateConfiguration(configEn, null);
this.recreate();
Любые подсказки, почему бы вам понравиться?
изменить: это мой манифест (с android: configChanges)
<activity
android:name=".activities.LoginActivity"
android:configChanges="orientation|locale"
android:label="@string/app_name"
android:screenOrientation="portrait"/>
Попробуйте изменить это:
Locale localeEn = new Locale("en_US");
Locale.setDefault(localeEn);
к этому
String language = "en";
String country = "US";
Locale locale = new Locale(language , country);
Мое решение, которое я получил от Udhay, работает, когда пользователь меняет язык в панели действий, а приложение "обновляется" с выбранным языком. Я использую android 6.0.
Не нужно добавлять locale в androidManifest.
@Override
public boolean onOptionsItemSelected(MenuItem item) {
Locale locale = null;
switch (item.getItemId()) {
case R.id.action_en:
locale = new Locale("en_US");
Toast.makeText(this, "English", Toast.LENGTH_SHORT).show();
break;
case R.id.action_is:
locale = new Locale("is", "IS");
Toast.makeText(this, "Íslanska", Toast.LENGTH_SHORT).show();
break;
}
Resources res = getResources();
DisplayMetrics dm = res.getDisplayMetrics();
Configuration conf = res.getConfiguration();
conf.locale = locale;
res.updateConfiguration(conf, dm);
Intent refresh = new Intent(this, MainActivity.class);
startActivity(refresh);
finish();
return true;
}
Добавили ли вы android:configChanges="locale"
в AndroidManifest.xml
? Я думаю, проблема в вашем файле AndroidManifest.xml
.
Вы можете увидеть пример change locale на мой репозиторий github.
Мое решение меняло язык перед действиями
setContentView(R.layout.layout_main);