2016-04-19 3 views
1

En Xamarin, j'ai créé l'extension suivante pour modifier les paramètres linguistiques à la volée:NoSuchMethodError Exception avec 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); 
} 

Je cible API 15 un et il échoue à l'exception suivante sur l'API 15:

Unhandled Exception: 

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

Existe-t-il un autre moyen "unifié" pour modifier les paramètres régionaux à la volée? Merci!

Répondre

4

The method SetLocale a été ajouté au niveau 17 de l'API, c'est pourquoi vous obtenez l'erreur.

Vous pouvez utiliser la propriété Android.OS.Build.Version.SdkInt pour rechercher la version API à l'exécution et appeler la méthode uniquement si elle est Android.OS.Build.VERSION_CODES.JellyBeanMr1 ou plus récente. Si ce n'est pas le cas, vous devez définir Locale public property au lieu d'appeler SetLocale