IMPORTANT: Per accedir als fitxer de subversion: http://acacha.org/svn (sense password). Poc a poc s'aniran migrant els enllaços. Encara però funciona el subversion de la farga però no se sap fins quan... (usuari: prova i la paraula de pas 123456)

Disseny

http://developer.android.com/design/patterns/settings.html

Com funciona?

Les preferències normalment són una apartat (sol ser dels últims apartats) del botó menú o del menú del Action Bar.

NOTA: També es pot accedir a les preferències utilitzant el AccountManager d'Android

En comptes de crear una vista/Activitat (Android View) amb la seu propi Layout el que es fa és utilitzar la classe Preference i es defineix el layout en un fitxer XML dedicat a les preferències.

Un objecte de tipus Preference és un bloc/apartat de les preferències que conté una sola preferència. Així hem de crear múltiples objectes "preference" per tal de tenir un menú de preferències amb múltiples preferències. Cada preferència apareix com un ítem en una llista i hi ha un tipus predefinit per cada tipus de preferència (checkbox, slider, multiple choice) amb un disseny UI predefinit. Un exemple:

CheckBoxPreference: Crea una preferència que mostra un checkbox.

o

ListPreference: una preferència que mostra una llista d'opcions a escollir

Cada preferència té el seu corresponent parell de clau-valor (key-value pair) que el sistema operatiu Android guarda automàticament a la SharedPreference default.

Els tipus possibles són:

  • Boolean
  • Float
  • Int
  • Long
  • String
  • String Set

Com que la interfície gràfica de l'apartat de preferències és especial també cal utilitzar una Activitat o Fragment especialitzat. Dos opcions:

Crear una Activitat per a les Settings amb el Wizard del Android SDK

La millor opció és utilitzar aquest Wizard per crear una activitat de preferències (SettingsActivity filla de PreferenceActivity). cal tenir en compte que crea una activitat compatible amb versions anteriors i posteriors a 3.0!

Creació de preferències mitjançant fitxer XML (prefs.xml)

A la carpeta res/xml/ creem un el fitxer res/xml/prefs.xml per tant les preferències es tracten com un Recurs Android de forma similar als layouts. Un exemple.

 <?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
    <CheckBoxPreference
        android:key="pref_sync"
        android:title="@string/pref_sync"
        android:summary="@string/pref_sync_summ"
        android:defaultValue="true" />
    <ListPreference
        android:dependency="pref_sync"
        android:key="pref_syncConnectionType"
        android:title="@string/pref_syncConnectionType"
        android:dialogTitle="@string/pref_syncConnectionType"
        android:entries="@array/pref_syncConnectionTypes_entries"
        android:entryValues="@array/pref_syncConnectionTypes_values"
        android:defaultValue="@string/pref_syncConnectionTypes_default" />
</PreferenceScreen>

és una pàgina de preferències amb un checkbox i una llista.

Com llegir les preferències?

Utilitzeu getDefaultSharedPreferences:

SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this);
String syncConnPref = sharedPref.getString(SettingsActivity.KEY_PREF_SYNC_CONN, "");

Vegeu també

Enllaços externs