2016-04-19 19 views
1

In Xamarin, ich habe die folgende Erweiterung erstellt locale on the fly zu ändern:NoSuchMethodError Ausnahme mit 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); 
} 

I API 15 mit folgenden Ausnahme ein und es nicht auf 15 API bin Targeting:

Unhandled Exception: 

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

Gibt es eine andere "einheitliche" Möglichkeit, das Gebietsschema im laufenden Betrieb zu ändern? Danke!

Antwort

4

The method SetLocale wurde in API-Ebene 17 hinzugefügt, deshalb erhalten Sie den Fehler.

Sie können die Eigenschaft Android.OS.Build.Version.SdkInt verwenden, um eine API-Version zur Laufzeit zu finden und die Methode nur aufzurufen, wenn sie Android.OS.Build.VERSION_CODES.JellyBeanMr1 oder höher ist. Wenn nicht, sollten Sie Locale public property anstatt SetLocale

aufrufen