【发布时间】:2014-03-11 01:18:53
【问题描述】:
我试图在设置首选项对话框中选择该值后获取该值。但我得到了一个ClassCastException 和一个崩溃?可能是因为我不确定如何获取已选择的值并保存它。本质上,我需要能够在另一个Activity 中获得新值。您如何获得这些值并保存并能够在其他活动中找到它们?
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
SharedPreferences s = getSharedPreferences("MY_PREFS", 0);
// Create a editor to edit the preferences:
SharedPreferences.Editor editor = s.edit();
if (key.equals("language_key")) {
sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
ListPreference listPref = (ListPreference) sharedPreferences;
String entryvalue = (String) listPref.getEntry();
if (entryvalue == "EN")
{
Log.d(TAG, "EN" + entryvalue);
Toast.makeText(getBaseContext(), "true", Toast.LENGTH_SHORT).show();
}
else
{
Log.d(TAG, "else" + entryvalue);
Toast.makeText(getBaseContext(), "false", Toast.LENGTH_SHORT).show();
}
}
}
首选项 xml 文件
<ListPreference
android:key="language_key"
android:summary="Choice of language mode"
android:title="Language Mode"
android:defaultValue="CH"
android:entries="@array/Languages"
android:entryValues="@array/LanguageValues" />
数组.xml
<string-array name="Languages">
<item name="EN">English</item>
<item name="CH">Chinese</item>
<item name="SP">Spanish</item>
</string-array>
<string-array name="LanguagesValues">
<item name="EN">EN</item>
<item name="CH">CH</item>
<item name="SP">SP</item>
</string-array>
【问题讨论】:
-
sharedPreferences 不能被强制转换为 ListPreference。您需要使用密钥从 sharedPreferences 中获取值,例如 sharedPreferences.get(key,"defaultValue");
标签: android android-preferences listpreference