我正在开发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中列出的任何语言选项时,如何刷新/重新创建应用程序(或活动)?
谢谢!
我不知道解决方案,因为我不是很习惯Android API,但是你的呃ror很容易被发现。 findPreference返回一个ListPreference并将其转换为MultiSelectListPreference。为什么你需要一个MultiSelectListPreference? –
我正在给multilistpreference中的语言选项。 –
那么,你需要改变你的findPreference方法,因为它不返回multilistpreference(或使用装饰器模式从首选项中创建一个新的multilistpreference –