2016-04-19 1 views
1

В Xamarin, я создал следующее расширение, чтобы изменить локаль на лету:NoSuchMethodError Exception с Setlocale

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; 

Есть ли какой-либо другой «единый» способ сменить язык на лету? Спасибо!

ответ

4

The method SetLocale был добавлен в api level 17, поэтому вы получаете сообщение об ошибке.

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

 Смежные вопросы

  • Нет связанных вопросов^_^