【发布时间】:2018-01-24 11:26:20
【问题描述】:
我遇到以下问题 - 无法在运行 4.4.2 (Gigabyte Mika M3) 的设备上更改区域设置,但它在运行 API 26 的 android 模拟器中完美运行。
我正在通过以下方式更改语言环境:
Resources resources = getResources();
Configuration configuration = resources.getConfiguration();
DisplayMetrics displayMetrics = resources.getDisplayMetrics();
configuration.setLocale(locale);
resources.updateConfiguration(configuration,displayMetrics);
getApplicationContext().createConfigurationContext(configuration);
我也尝试过这种方式 - 但它也不起作用:
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config,
getBaseContext().getResources().getDisplayMetrics());
我将位置作为字符串存储在共享首选项中,如下所示:
SharedPreferences sharedPreferences = getSharedPreferences("languages", MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("language", locale.getLanguage());
editor.apply();
在这一切之后,我正在重新创建活动
Intent refresh = new Intent(ChooseLanguageActivity.this, ChooseLanguageActivity.class);
startActivity(refresh);
finish();
问题是 - 重新创建的活动 (this) 使用与之前相同的语言打开,并且应用程序在重新启动时使用默认语言环境打开:C
【问题讨论】: