#android
#Android
Вопрос:
То, что я попробовал, заключается в следующем
final Locale locale = new Locale("en", "US");
Locale.setDefault(locale);
final Configuration config = new Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config,
getBaseContext().getResources().getDisplayMetrics());
я хочу установить определенную локаль для всего приложения, и я делаю это на уровне класса приложения, но приведенные выше строки, похоже, не работают, поскольку, когда я изменяю спецификацию языка Locale из настройки, средство выбора даты не влияет на указанную локаль класса приложения и принимает локаль из настройки языковой спецификации.
Комментарии:
1. Я не уверен, что до конца понимаю ваш вопрос. Проблема в том, что приложение не отображает тексты из string.xml на правильном языке?
2. нет, я хочу установить en us в качестве языка для всего приложения, которое даже при изменении языка в настройках не повлияет на мое приложение
3. Я вижу! Я делаю что-то очень похожее в одном из своих приложений, используя тот же код, что и выше. Единственное отличие, которое я могу заметить, заключается в том, что я делаю это на уровне активности, а не на уровне приложения. Я предлагаю вам переместить код в один из методов onCreate / onResume ваших действий, просто чтобы посмотреть, поможет ли это.
4. да, но я хочу сделать это для всего моего приложения, а не для конкретного действия, возможно ли это?? поскольку выполнение для каждого действия может привести к ненужному увеличению повторения кода. есть ли какой-нибудь способ сделать то же самое в классе приложения.
5. Этого я не знаю. У меня есть некоторые другие требования в моем приложении, из-за которых я не могу установить его на уровне приложения. Одна из идей состоит в том, чтобы использовать пользовательскую суперактивность, например, MyActivity расширяет активность. Поместите свой код в метод onCreate MyActivity, и пусть все ваши действия расширяют MyActivity вместо Activity.
Ответ №1:
Я не уверен, работает ли установка языкового стандарта на уровне приложения, поскольку я сам этого не пробовал.
Обходной путь (который, как я знаю, работает) заключается в создании суперактивности, например MyActivity extends Activity
. Поместите код
final Locale locale = new Locale("en", "US");
Locale.setDefault(locale);
final Configuration config = new Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics());
в onCreate()
методе MyActivity, и пусть все ваши действия расширяют MyActivity вместо Activity.