android указала языковой стандарт для всего приложения

#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.