以下问题:
preferences.xml
:
<ListPreference
android:title="titel"
android:summary="summary"
android:key="remove_onclick"
android:entries="@array/removeOnclick"
android:entryValues="@array/removeOnclick_value"
android:defaultValue="3"/>
我的问题是,我如何获得价值(1
,2
或3
),以便在我的MainActivity.java中使用if条件< /强>
SharedPreferences sharedConfig = PreferenceManager.getDefaultSharedPreferences(this);
String removeOnklick = sharedConfig.getString("remove_onclick", "3");
这不起作用!
引起:java.lang.ClassCastException:java.lang.Boolean不能 转换为java.lang.String at com.notification.app.SettingsActivity.onCreate(SettingsActivity.java:14)
SettingsActivity:
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
PreferenceManager.setDefaultValues(this, R.xml.preferences, false);
}
EDIT
strings.xml
<string-array name="removeOnclick">
<item>Always</item>
<item>Never</item>
<item>Always ask</item>
</string-array>
<string-array name="removeOnclick_value">
<item>1</item>
<item>2</item>
<item>3</item>
</string-array>
而且我还有2个布线效果很好。
boolean playSound = sharedConfig.getBoolean("sound_on_create", false);
boolean vibrate = sharedConfig.getBoolean("vibrate_on_create", false);
更新
我只需删除缓存和内存......
答案 0 :(得分:1)
首先,这一行应放在MainActivity的onCreate方法中:
PreferenceManager.setDefaultValues(this, R.xml.preferences, false);
并且,要从SettingsActivity中的ListPreference获取值:
ListPreference pref = findPreference("remove_onclick");
String value = pref.getValue();
if (value.equals("3")){
// do something here with value 3
}
如果您想从MainActivity获取值,请致电:
SharedPreferences sharedConfig = PreferenceManager.getDefaultSharedPreferences(this);
String removeOnklick = sharedConfig.getString("remove_onclick", "3");
if(removeOnklick.equals("1"){
// do something here with value 1
}
答案 1 :(得分:-1)
尝试使用getBaseContext()..
SharedPreferences getPrefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
并试试这个
if(removeonklick ==&#34; 3&#34;) {
}