java - SetLocale 的 NoSuchMethodError 异常

标签 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;

是否有任何其他“统一”的方式来即时更改语言环境? 谢谢!

最佳答案

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/

相关文章:

java - Data Nucleus-MySql 不正确的表定义; auto 列只能有一个并且必须定义为键错误

java - Android中如何正确升级AIDL接口(interface)?

javascript - 如何将变量从 webview Javascsript 传递到 Xamarin Forms 代码?

java - 如何将值从 Activity 类传递到 android 中的 java 类?

java - 如何比较Arraylist中不同数组中的两个元素?

java - Dagger 2 多重绑定(bind)教程的@AutoAnnotation 不起作用。如何让它发挥作用?

android - 微调器问题中的动态数组

azure - 在 Xaramin 和 Azure 通知中心注册用户标签

xamarin - Xamarin.Forms 和 Xamarin Native 有什么区别?

java - 如何将图像添加到六边形网格中的六边形中?