SetLocale 的 NoSuchMethodError 异常

NoSuchMethodError Exception with 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;

是否有任何其他 "unified" 即时更改语言环境的方法? 谢谢!

The method SetLocale 已添加到 api 级别 17,因此这就是您收到错误的原因。

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