How to do opposite of of preference attribute android:dependency? How to do opposite of of preference attribute android:dependency? xml xml

How to do opposite of of preference attribute android:dependency?


Actually found it on my own and figured I'd just post it here to help anyone that might have this same issue:

android:disableDependentsState="true"

Put that in the controlling preference.


Dmytro Zarezenko asked what if you wanted some dependencies to be enabled when the preference on which they depend is true and some to be enabled when that preference is false.

Use the method described above to set the all the dependant preferences of one type (which ever have the greater number). Then (with the class having implements OnSharedPreferenceChangeListener) have code like this in the Preference Activity and/or Preference Fragment:

@Overridepublic void onResume(){    super.onResume();    sharedPreferences.registerOnSharedPreferenceChangeListener(this);}@Overridepublic void onPause(){    super.onPause();    sharedPreferences.unregisterOnSharedPreferenceChangeListener(this);}public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key){    if (key.equals("pref_that_they_depend-upon")    {        // Iterate over the preferences that need to be enabled or disabled,        // lets say there is just one called the_awkward_one.        Preference preference = findPreference("the_awkward_one");        // Or preference.setEnabled(! sharedPreferences.getBoolean(("pref_that_they_depend-upon", defaultValue));        preference.setEnabled(sharedPreferences.getBoolean(("pref_that_they_depend-upon", defaultValue));    }}


This is my code sample for doing this from code and not XML.

  String eitherKey = "either";  String orKey = "or";  CheckBoxPreference either = new CheckBoxPreference(this);  either.setKey(eitherKey);  either.setTitle("Either");  either.setSummary("It is either one or");  either.setDefaultValue(false);  either.setDisableDependentsState(true);  inlinePrefCat.addPreference(either);  try  {     //Crossfade Time     CheckBoxPreference or = new CheckBoxPreference(this);     or.setKey(orKey);     or.setTitle("Or");     or.setSummary("the other");     inlinePrefCat.addPreference(or);     or.setDependency(eitherKey);  }  catch (Exception e)  {  }