Изменение локали не работает после перехода на Androidx ⇐ Android

Форум для тех, кто программирует под Android
Anonymous
Изменение локали не работает после перехода на Androidx

Сообщение Anonymous »

У меня есть старый проект, поддерживающий несколько языков. Я хочу обновить библиотеку поддержки и целевую платформу. Перед переходом на Androidx все работает нормально, но теперь смена языка не работает!

Я использую этот код для изменения локали приложения по умолчанию

Код: Выделить всё

private static Context updateResources(Context context, String language)
{
Locale locale = new Locale(language);
Locale.setDefault(locale);

Configuration configuration = context.getResources().getConfiguration();
configuration.setLocale(locale);

return context.createConfigurationContext(configuration);
}
И вызывайте этот метод для каждого действия, переопределяя AttachBaseContext следующим образом:

Код: Выделить всё

@Override
protected void attachBaseContext(Context newBase)
{
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
String language = preferences.getString(SELECTED_LANGUAGE, "fa");
super.attachBaseContext(updateResources(newBase, language));
}
Я попробовал другой метод для получения строки и заметил, что ‍‍‍‍

Код: Выделить всё

getActivity().getBaseContext().getString
работает, а getActivity().getString не работает. Даже следующий код не работает и всегда показывает vlaue app_name в строке ресурса по умолчанию.xml.
Я делюсь примером кода на https://github.com/Freydoonk/LanguageTest

Также getActivity( )..getResources().getIdentifier не работает и всегда возвращает 0!

Подробнее здесь: https://stackoverflow.com/questions/552 ... o-androidx

Вернуться в «Android»