haga su PreferenceActivity
implement
SharedPreferences.OnSharedPreferenceChangeListener
declarar en PreferenceActivity
:
SharedPreferences prefs;
inicializar en onCreate
:
SharedPreferences sPrefs = PreferenceManager.getDefaultSharedPreferences(this); prefs = sPrefs;
y registrar el cambio de preferencia compartida oyente
prefs.registerOnSharedPreferenceChangeListener(this);
hacer lo mismo que dijo Steve en onResume
y m ethods.
implementación de onSharedPreferenceChanged
oyente:
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
Log.d("SettingsActivity","onSharedPreferenceChanged LISTENER FIRED");
if (key.equals(getString(R.string.key_call))) {
//if call true
if (sharedPreferences.getBoolean(getString(R.string.key_call), false)) {
Preference preference = findPreference(getString(R.string.key_record));
preference.setEnabled(false);
} else { // if call false
Preference preference = findPreference(getString(R.string.key_record));
preference.setEnabled(true);
}
}
if (key.equals(getString(R.string.key_record))) {
//if record true
if (sharedPreferences.getBoolean(getString(R.string.key_record), false)) {
Preference preference = findPreference(getString(R.string.key_call));
preference.setEnabled(false);
} else { // if record false
Preference preference = findPreference(getString(R.string.key_call));
preference.setEnabled(true);
}
}
}
En este caso, tengo 2 Preferencias mutuamente excluyentes en PreferenceActivity
. Llamar y grabar. Cuando ambos están desmarcados, ambos pueden verificarse, pero cuando el usuario verifica uno de ellos, el otro se desactiva (gris). Cuando el usuario desmarca la preferencia marcada, el usuario puede verificar la otra.
En ambos, otras preferencias pueden depender y se pueden resolver con el atributo android:dependancy
en el archivo XML.
confirmado ... agrega esa línea a la preferencia que pones en android: dependencia :) –
Para ser aún más claro: pon esa línea en la preferencia de la que depende ** tu preferencia **. El documento dice: "El estado (verdadero para encendido, o falso para apagado) que causa ** dependientes ** para ser deshabilitado". – BoD
Pero si quiero habilitar algunas preferencias y desactivar algunas preferencias depende de una casilla de verificación pref? –