studio how from example data create code and android preferences

how - sharedpreferences android code



Programación de las preferencias con casillas de verificación (2)

En mi página de configuración tengo una preferencia que obtiene una lista de configuraciones que se pueden alternar y que quiero mostrar como preferencias de casilla de verificación individuales.

Sé que preferences.xml admite la generación de listas de preferencias (mirando la página de configuración de wi-fi) pero ListPreference solo le permite seleccionar una de la lista.

He estado buscando cómo generar preferencias mediante programación, pero solo he logrado encontrar cómo cambiar los atributos de las preferencias que ya están en el XML.


Agregue programáticamente una preferencia, con otras preferencias en el archivo xml: Otras soluciones no me funcionaron porque TAMBIÉN tenía un xml con preferencias. No estoy seguro de que todas estas llamadas sean necesarias / redundantes, pero esto funciona.

Método onCreate (), la clase extiende PreferenceActivity:

setContentView(R.layout.preferences); addPreferencesFromResource(R.xml.preferences); PreferenceScreen pScreen = getPreferenceManager().createPreferenceScreen(this); CheckBoxPreference cb = new CheckBoxPreference(this); cb.setKey("cb"); cb.setTitle("BLAH"); cb.setOrder(99); //not working... pScreen.addPreference(cb); setPreferenceScreen(pScreen); addPreferencesFromResource(R.xml.preferences);

Nota al margen: Como necesitaba generar una lista de casillas de verificación dinámica, se adaptaba mejor dentro de una Pantalla de Preferencia interna. Así que creé esta PreferenceScreen dentro del xml, luego generé dinámicamente las casillas de verificación dentro de este. De esta manera, el ordenamiento no importó ya que todas las "nuevas" casillas dinámicas estaban dentro de esta pantalla.


Aquí hay un breve ejemplo (asumiendo que está extendiendo PreferenceActivity ):

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); PreferenceScreen screen = getPreferenceManager().createPreferenceScreen(this); PreferenceCategory category = new PreferenceCategory(this); category.setTitle("category name"); screen.addPreference(category); CheckBoxPreference checkBoxPref = new CheckBoxPreference(this); checkBoxPref.setTitle("title"); checkBoxPref.setSummary("summary"); checkBoxPref.setChecked(true); category.addPreference(checkBoxPref); setPreferenceScreen(screen); }