我正在開發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 –