在 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;
是否有任何其他“统一”的方式来即时更改语言环境? 谢谢!
最佳答案
The method SetLocale已在 api 级别 17 中添加,因此这就是您收到错误的原因。
您可以使用 Android.OS.Build.Version.SdkInt
属性在运行时查找 api 版本并仅在它是 Android.OS.Build.VERSION_CODES.JellyBeanMr1< 时调用该方法
或更新。如果不是,则应设置 Locale public property而不是调用 SetLocale
关于java - SetLocale 的 NoSuchMethodError 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36726730/