Android 在应用内更改和设置默认区域设置
2022-09-02 01:31:41
我正在研究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);
我能想到的一个解决方案是使用共享首选项保留用户选择的区域设置,并在每个活动的onCreate()方法中将区域设置设置为持久化区域设置,因为onCreate()在每次配置更改时都会被一次又一次地调用。有没有更好的方法来做到这一点,这样我就不必在每一项活动中都这样做。
基本上我想要的是 - 一旦我更改/设置到HomeActivity中的某个区域设置,我希望我的应用程序中的所有活动都使用该区域设置本身,而不管任何配置更改。除非并且直到它从应用程序的 HomeActivity 更改为其他区域设置,该“家庭活动”提供更改区域设置的选项。