我可以在按下按钮时更改应用程序语言环境。这在AVDs上,以及在API 30的实际设备上的调试和发布版本APK上都能够完美运行。
但是,一旦应用程序发布到Play Store版本,它就无法工作了,语言环境永远不会更改。
请帮忙解决!谢谢!
以下是SettingsFragment中的代码:
private void setAppLocale(Context context, String language) {
Locale locale = new Locale(language);
Locale.setDefault(locale);
Configuration config = context.getResources().getConfiguration();
config.setLocale(locale);
context.createConfigurationContext(config);
context.getResources().updateConfiguration(config, context.getResources().getDisplayMetrics());
Intent refresh = new Intent(getActivity().getApplicationContext(), MainActivity.class);
startActivity(refresh);
getActivity().finish();
}
以上代码在按钮被按下后被调用,所选项被存储在共享首选项中。该活动被刷新并加载主活动,但区域设置从未更改。
这是我的MainActivity的样子:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
hideSystemUI();
sharedPref = getPreferences(Context.MODE_PRIVATE);
selectedLanguage = sharedPref.getString("Test.SL.LanguageName", language);
selectedTheme = sharedPref.getString("Test.SL.ThemeName", "Light");
if (selectedTheme.equals("Light")){
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
} else if (selectedTheme.equals("Dark")) {
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
}
if (selectedLanguage.equals("Sinhala")) {
language = "Sinhala";
setAppLocale(this, "si");
} else {
language = "English";
setAppLocale(this, "en");
}
binding = ActivityMainBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
setSupportActionBar(binding.appBarMain.toolbar);
......
}
public void setAppLocale(Context context, String language) {
Locale locale = new Locale(language);
Locale.setDefault(locale);
Configuration config = context.getResources().getConfiguration();
config.setLocale(locale);
context.createConfigurationContext(config);
context.getResources().updateConfiguration(config, context.getResources().getDisplayMetrics());
}
任何想法,建议和解决方案请提出!再次感谢您!