防止应用程序语言在区域设置更改后改变

4

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

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


你不应该覆盖手机的语言设置,因为没有充分的理由这么做。 - Gabe Sechan
是的,有这样的需求。例如,用户可能想要一款以用户正在学习的语言为主的语言学习应用程序。 - Mahou5
2个回答

0
当用户在应用程序中选择语言时,将其保存到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);

1
谢谢,我明白了。我的意思是这样一种情况:当我的本地设置好后,用户最小化我的应用程序并更改设备的本地设置,然后恢复我的应用程序。 - Sharas
@Sharas 将此添加到您的活动中的onConfigurationChanged()函数。 - Gevork Safaryan

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接