代码之家  ›  专栏  ›  技术社区  ›  user1400995

SetLocale出现NoSuchMethodError异常

  •  1
  • user1400995  · 技术社区  · 8 年前

    在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 回复  |  直到 8 年前
        1
  •  4
  •   Giorgi    8 年前

    The method SetLocale 是在api级别17中添加的,所以这就是为什么会出现错误的原因。

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