preferencefragmentcompat - setting layout in android
Preferencia de la casilla de verificación de Android (2)
No puedo encontrar ningún tutorial sobre la preferencia de la casilla de verificación. Puedo usar una lista de referencia, pero no puedo usar la preferencia de la casilla de verificación. Por ahora, quiero que si el usuario establece el checbox, un mensaje de tostado dice "verdadero" y si lo activa, el mensaje de tostado dice "falso". Hasta ahora tengo esto:
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 savedInstanceState) {
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);
}
}
Edición: Solución gracias a 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;
}
});
Debe agregar un escucha a la Preferencia en su método onCreate
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;
}
});
Puede convertir el valor de la casilla de verificación en un valor booleano. Esto podría ser más seguro y extensible que verificar el valor de toString ().
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;
}
});