Я работаю над глобализацией приложения для 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() метод locale устанавливается на постоянную локаль, так как onCreate() вызывается снова и снова для каждого изменения конфигурации. Есть ли лучший способ сделать это, чтобы мне не приходилось делать это в каждой деятельности.
В принципе, я хочу, чтобы: - Как только я изменил/установил какой-то язык в своей HomeActivity, я хочу, чтобы все действия в моем приложении использовали этот язык независимо от любых изменений конфигурации.... если и до тех пор, пока он не будет изменен на другой локаль из приложения HomeActivity, которое предоставляет опции для изменения локали.