【问题标题】:Prevent app language change after locale changes区域设置更改后防止应用程序语言更改
【发布时间】:2017-06-14 14:51:38
【问题描述】:

我的应用支持 3 种语言,用户可以在这些选项之间进行选择。 当我将设备区域设置更改为我支持的语言之一时,UI 语言会自动更改,问题是如果用户已经在应用程序中选择了我支持的 3 种语言之一,我不希望它更改。

如何防止这种自动语言更改?

【问题讨论】:

  • 你不应该。使用手机的区域设置,没有充分的理由覆盖它。

标签: android


【解决方案1】:

我所做的是更新我的首选项中的一个标志,以指示用户是否更改了语言,并在 Activity 的onResume() 上检查其值以重新启动它。

在 Activity 的 onCreate() 上,我将语言更新为存储的首选项。

【讨论】:

    【解决方案2】:

    当用户在应用程序中选择时,将语言环境保存到 SharedPreference。并在您的代码中添加默认支持的语言环境。

    String userLocale = App.getSharedPreferences().getString(SELECTED_LOCALE,"your_default_string");
    

    在你的 Application.class onCreate 方法中添加这个块:

    Locale locale = new Locale(userLocale) // 
    Resources resources = getResources();
    Configuration configuration = resources.getConfiguration();
    configuration.setLocale(locale);
    

    【讨论】:

    • 谢谢,我明白了,我的意思是设置我的语言环境,然后用户最小化我的应用程序并更改设备语言环境并恢复我的应用程序
    • @Sharas 将此添加到您活动中的 onConfigurationChanged() 中
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-08
    • 2011-02-05
    • 2011-12-24
    • 2015-06-19
    • 1970-01-01
    • 1970-01-01
    • 2013-01-01
    相关资源
    最近更新 更多