Java SetLocale的NoSuchMethodError异常

Java SetLocale的NoSuchMethodError异常,java,android,xamarin,locale,setlocale,Java,Android,Xamarin,Locale,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.Update

在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;
有没有其他“统一”的方法来动态更改区域设置? 谢谢

是在api级别17中添加的,因此您会收到错误

您可以使用
Android.OS.Build.Version.SdkInt
属性在运行时查找api版本,并且仅当该方法是
Android.OS.Build.Version\u code.JellyBeanMr1
或更新版本时才调用该方法。如果不是,您应该设置api级别17中添加的而不是调用
SetLocale

,这就是您得到错误的原因

您可以使用
Android.OS.Build.Version.SdkInt
属性在运行时查找api版本,并且仅当该方法是
Android.OS.Build.Version\u code.JellyBeanMr1
或更新版本时才调用该方法。如果不是,则应设置,而不是调用
SetLocale