SetLocale的NoSuchMethodError异常

时间:2016-04-19 18:35:43

标签: 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.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 个答案:

答案 0 :(得分:4)

在pi级别17中添加了

The method SetLocale,这就是您收到错误的原因。

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