Исключение NoSuchMethodError с SetLocale

В Xamarin я создал следующее расширение для изменения локали на лету:

public static void ToEnglishLocale(this Activity activity)
{
    Locale locale = new Locale("en-US");
    Configuration config = new Configuration();
    config.SetLocale(locale);
    activity.BaseContext.Resources.UpdateConfiguration(config, activity.BaseContext.Resources.DisplayMetrics);
}

Я нацеливаюсь на API 15, и он не работает со следующим исключением на API 15:

Unhandled Exception:

Java.Lang.NoSuchMethodError: no method with name='setLocale' signature='(Ljava/util/Locale;)V' in class Landroid/content/res/Configuration;

Есть ли другой "унифицированный" способ изменить локаль на лету? Спасибо!

1 ответ

Решение

Метод SetLocale был добавлен на уровне API 17, поэтому вы получаете сообщение об ошибке.

Ты можешь использовать Android.OS.Build.Version.SdkInt свойство найти версию API во время выполнения и вызывать метод, только если он Android.OS.Build.VERSION_CODES.JellyBeanMr1 или новее. Если это не так, вы должны установить публичное свойство Locale вместо вызова SetLocale

Другие вопросы по тегам