Почему андроид: текст метки не меняется, когда пользователь меняет язык в моем приложении?
Поэтому в моем приложении самая первая активность, которую видит пользователь, - это выбор языка.
Скажем, если пользователь выбирает французский и затем переходит к ActivityB, то к ActivityC.
Сейчас решает сменить язык.
Итак, возвращаемся к ActivityB, а затем к самому первому Activity и выбираем язык как испанский.
Теперь снова, когда пользователь переходит к ActivityB, весь другой текст внутри фрагмента / действия изменяется на испанский, но android:label все еще остается на французском языке. как это исправить?
Вот так выглядит мой ActivityA
public View onCreateView(LayoutInflater inflater, ViewGroup container,
final Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_choose_language, container, false);
radioGroup = (RadioGroup) rootView.findViewById(R.id.lang_choice_radio);
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener()
{
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch(checkedId){
case R.id.english_lang:
// do operations specific to this selection
setLocale("en_US");
Intent intentEng = new Intent(getActivity(), Choose_Country.class);
startActivity(intentEng);
break;
case R.id.indonesian_lang:
// do operations specific to this selection
setLocale("in");
Intent intent = new Intent(getActivity(), Choose_Country.class);
startActivity(intent);
break;
}
}
});
return rootView;
}
public void setLocale(String lang) {
myLocale = new Locale(lang);
Resources res = getResources();
DisplayMetrics dm = res.getDisplayMetrics();
Configuration conf = res.getConfiguration();
conf.locale = myLocale;
res.updateConfiguration(conf, dm);
Locale.setDefault(myLocale);
onConfigurationChanged(conf);
Intent refreshIntent = new Intent(getActivity(), ChooseLanguage.class); // refresh the activity
refreshIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
refreshIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(refreshIntent);
getActivity().finish();
}
1 ответ
В моем случае приложение не будет менять язык панели действий после изменения локали. Это изменится, когда я удалю приложение из недавнего приложения, что сделает его полностью закрытым. Чтобы решить, я использую setTitle(R.id.myapplabel)
когда вы хотите обновить приложение или создать, поэтому не нужно перезапускать приложение. Переведите метку вашей активности в string.xml, и она должна работать.
Несколько шагов для решения проблемы.
Переместите приложение в ToolBar, больше не используйте ActionBar
Удалить ярлык из файла AndroidManifest.xml
<activity android:name=".package.Activity" android:label="" android:configChanges="locale" android:screenOrientation="portrait" android:theme="@style/NoActionBar" />
Восстановите свое приложение при изменении языкового стандарта activity.recreate()
- Все заголовки действий должны быть в файле strings.xml.