从ListPreference获取keyValue

时间:2015-06-30 13:05:46

标签: java android string boolean listpreference

以下问题:

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"/>

我的问题是,我如何获得价值(123),以便在我的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);

更新

我只需删除缓存和内存......

2 个答案:

答案 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;) {

}