Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 防止在区域设置更改后更改应用程序语言_Android - Fatal编程技术网

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

Android 防止在区域设置更改后更改应用程序语言,android,Android,我的应用程序支持3种语言,用户可以在这些选项中进行选择。 当我将设备区域设置更改为我支持的语言之一时,UI语言会自动更改,问题是如果用户已经在应用程序中选择了我支持的3种语言之一,我不希望它更改 如何防止这种自动语言更改?当用户在应用程序中选择区域设置时,将其保存到SharedReference。并在代码中添加默认支持的语言环境 String userLocale = App.getSharedPreferences().getString(SELECTED_LOCALE,"your_defau

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


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

当用户在应用程序中选择区域设置时,将其保存到SharedReference。并在代码中添加默认支持的语言环境

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);

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


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

您不应该这样做。使用手机的区域设置,没有很好的理由覆盖它。谢谢,我有这一点,我的意思是设置我的区域设置,然后用户最小化我的应用程序,更改设备区域设置并恢复我的操作application@Sharas将其添加到活动中的onConfigurationChanged()中