我正在全球化Android应用程序。我必须提供在应用程序内选择不同区域设置的选项。我在我的活动(HomeActivity)中使用以下代码,提供更改语言环境的选项。
基本上,我想要的是:一旦在我的HomeActivity中更改/设置某种语言环境,我希望应用程序中的所有活动都使用该语言环境,而不考虑任何配置更改......直到从提供更改语言环境选项的应用程序的HomeActivity更改为其他语言环境为止。
我正在进行Android应用程序的全球化工作。我需要在应用程序内提供选择不同语言环境的选项。我在我的活动(HomeActivity)中使用以下代码,提供更改语言环境的选项。
Configuration config = new Configuration();
config.locale = selectedLocale; // set accordingly
// eg. if Hindi then selectedLocale = new Locale("hi");
Locale.setDefault(selectedLocale); // has no effect
Resources res = getApplicationContext().getResources();
res.updateConfiguration(config, res.getDisplayMetrics());
只要没有配置更改,例如屏幕旋转,此方法就能正常工作,其中区域设置默认为 Android 系统级别的区域设置,而不是代码设置的区域设置。
Locale.setDefault(selectedLocale);
我想到的一个解决办法是使用SharedPreferences持久化用户选择的语言环境,并在每个活动的onCreate()方法中将语言环境设置为持久化后的值,因为每次配置更改都会调用onCreate()方法。是否有更好的方法可以避免在每个活动中进行操作呢?基本上,我想要的是:一旦在我的HomeActivity中更改/设置某种语言环境,我希望应用程序中的所有活动都使用该语言环境,而不考虑任何配置更改......直到从提供更改语言环境选项的应用程序的HomeActivity更改为其他语言环境为止。