I cannot find any tutorials on checkbox preference. I can use a listpreference, but I can't use checkbox preference. For now, I want that if user sets on the checbox, a toast msg says "true" and if he sets it off, the toast msg says "false". So far I have this:
preferences.xml:
 <CheckBoxPreference
          android:title="Show Call UI"
          android:defaultValue="true"
          android:summary="Show Call Interface when clicking call button"
          android:key="checkboxPref" />
EditPreferences.java:
public class EditPreferences extends PreferenceActivity {
    String listPreference;
    boolean checkboxPreference;
    @Override
    public void onCreate(Bundle saved开发者_运维技巧InstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.preferences);
    }
    public void onStart(Intent intent, int startId) {
        getPrefs();
    }
    private void getPrefs() {
        SharedPreferences prefs = PreferenceManager
                .getDefaultSharedPreferences(getBaseContext());
        listPreference = prefs.getString("listPref", "nr1");
        checkboxPreference = prefs.getBoolean("checkboxPref", true);
    }
}
Edit: Solution thanks to David Caunt:
checkboxPreference.
    setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
    public boolean onPreferenceChange(Preference preference, Object newValue) {
        if (newValue.toString().equals("true")) {
            Toast.makeText(getApplicationContext(), "CB: " + "true",
                                                    Toast.LENGTH_SHORT).show();
        } else {
            Toast.makeText(getApplicationContext(), "CB: " + "false",
                                                    Toast.LENGTH_SHORT).show();
        }
        return true;
    }
});
You need to add a listener to the Preference in your onCreate method
    final CheckBoxPreference checkboxPref = (CheckBoxPreference) getPreferenceManager().findPreference("checkboxPref");
    checkboxPref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {            
        public boolean onPreferenceChange(Preference preference, Object newValue) {
            Log.d("MyApp", "Pref " + preference.getKey() + " changed to " + newValue.toString());       
            return true;
        }
    }); 
You can cast the value of the checkbox into a boolean. This might be safer and more extensible than checking the toString() value.
final CheckBoxPreference checkboxPref = (CheckBoxPreference) getPreferenceManager().findPreference("checkboxPref");
checkboxPref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {            
    public boolean onPreferenceChange(Preference preference, Object newValue) {
        if(newValue instanceof Boolean){
            Boolean boolVal = (Boolean)newValue;
        }
        return true;
    }
}); 
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
Log.i("LOG", String.valueOf(sp.getBoolean("key", false)));
Simplest way i found of getting value if item is pressed. If log is:
I/LOG: true
Checkbox is pressed
I/LOG: false
Checkbox is not selected
Hope this answers your question.
 
         
                                         
                                         
                                         
                                        ![Interactive visualization of a graph in python [closed]](https://www.devze.com/res/2023/04-10/09/92d32fe8c0d22fb96bd6f6e8b7d1f457.gif) 
                                         
                                         
                                         
                                         加载中,请稍侯......
 加载中,请稍侯......
      
精彩评论