Si solo necesita habilitar o deshabilitar el uso del PIN, bastará con una CheckBoxPreference en este caso (consulte el siguiente código de ejemplo, Primera Categoría). Los RadioButton se usan generalmente, cuando necesita elegir algo de una lista de configuraciones (ListPreference), por ejemplo (ver código de ejemplo, Segunda Categoría), para elegir un color.
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory
android:title="First Category">
<CheckBoxPreference
android:title="Using PIN"
android:defaultValue="false"
android:key="checkboxPref"
android:summaryOn="Disable PIN"
android:summaryOff="Enable PIN"/>
</PreferenceCategory>
<PreferenceCategory
android:title="Second Category">
<ListPreference
android:title="Pick your favourite color"
android:key="listPref"
android:defaultValue="4"
android:entries="@array/listArray"
android:entryValues="@array/listValues" />
</PreferenceCategory>
</PreferenceScreen>
El código fuente para este ejemplo será:
public class PreferencesHelpExample extends PreferenceActivity implements OnSharedPreferenceChangeListener {
public static final String KEY_LIST_PREFERENCE = "listPref";
private ListPreference mListPreference;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
// Get a reference to the preferences
mListPreference = (ListPreference)getPreferenceScreen().findPreference(KEY_LIST_PREFERENCE);
}
@Override
protected void onResume() {
super.onResume();
// Setup the initial values
mListPreference.setSummary("Current value is " + mListPreference.getEntry().toString());
// Set up a listener whenever a key changes
getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
}
@Override
protected void onPause() {
super.onPause();
// Unregister the listener whenever a key changes
getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
}
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
// Set new summary, when a preference value changes
if (key.equals(KEY_LIST_PREFERENCE)) {
mListPreference.setSummary("Current value is " + mListPreference.getEntry().toString());
}
}
}
Para ListPreference también necesitará un archivo arrays.xml, que se encuentra en la carpeta "valores":
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="listArray">
<item>red</item>
<item>orange</item>
<item>yellow</item>
<item>green</item>
<item>blue</item>
<item>violet</item>
</string-array>
<string-array name="listValues">
<item>1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item>5</item>
<item>6</item>
</string-array>
</resources>
Vea también algunos excelentes ejemplos, trabajando con PreferenceActivity - me ayudaron mucho:
Android Preferences;
How to create a group of RadioButtons instead of a list;
How to display the current value of an Android Preference in the Preference summary?
¿Podría explicarnos cómo funciona el valor predeterminado en la preferencia de lista en este caso? – notsopopularguy
lo siento, mi error. El valor debe especificarse aquí; debe elegir uno de los listValues (entryValues). En caso de color verde predeterminado, sería android: defaultValue = "4" en lugar de "digiGreen". Corregido, gracias por el comentario. – Kate
Esto no respondió la pregunta, que era cómo hacer un grupo de botones de opción. –