Я работаю над Android-приложением. Следующий код работает правильно, но когда я перехожу на MainActivity
через BackPress
.Как обновить приложение Android при изменении предпочтений или изменении языка (локальный)
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
Configuration config = getBaseContext().getResources().getConfiguration();
String lang = settings.getString("lang_list", "");
if (! "".equals(lang) && ! config.locale.getLanguage().equals(lang)) {
recreate();
Locale locale = new Locale(lang);
Locale.setDefault(locale);
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics());
}
Когда я изменить язык моего приложения из MultiListPreference
Это дает ошибку
вызвано следующими причинами: java.lang.ClassCastException: android.preference.ListPreference не может быть приведен к android.preference.MultiSelectListPreference
И мое приложение падает ..
Пожалуйста, посмотрите на код ниже ..
final MultiSelectListPreference lang_list= (MultiSelectListPreference) findPreference("lang_list");
if(news_category_list!=null)
{
news_category_list.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object o) {
AppController.getInstance().notifyPrefrenceChanged(true);
//Log.d("on change","change");
lang_list.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
startActivity(new Intent(getActivity(),getActivity().this));
return false;
}
});
return true;
}
});
}
Как обновить экран с помощью выбранного языка. Я не хочу перейти на MainActivity
после выбора нового языка. Просто обновите страницу с помощью текущего экрана, когда я выберу другой язык.
Пожалуйста, помогите мне с этим кодом. Как я могу обновить/воссоздать приложение (или действие), когда я выбираю какой-либо параметр языка, указанный в ListPreference?
Спасибо!
Я не знаю решение, потому что я не очень привык к API Android, но ваш ror легко заметить. findPreference возвращает ListPreference, и вы передаете его в MultiSelectListPreference. Зачем вам нужен MultiSelectListPreference? –
Я даю варианты языка в multilistpreference .. –
Ну, тогда вам нужно изменить свой метод findPreference, потому что он не возвращает multilistpreference (или используйте шаблон декоратора, чтобы сделать новую многолистную ссылку из предпочтения –