Ir al contenido principal

Como crear una pantalla de preferencias (PrefenrenceActivity)

Es bastante común tener que crear en nuestra aplicación una pantalla de preferencias para que el usuario pueda configurar ciertos parámetros de la aplicación. Lo primero que se nos puede venir a la mente es crear un layout desde cero para poder cargar y guardar las configuraciones que deseemos, pero Google ha ideado un sistema bastante sencillo con el que poder crear una pantalla de configuración básica en pocos minutos.

Si nos fijamos en una pantalla cualquiera de configuración de Android nos puede venir a la mente algo parecido a lo siguiente:



En estas pantallas normalmente suelen aparecer checkbox, listas de selección, un texto editable...crear una pantalla de este tipo es bastante sencillo.

Una pantalla de preferencias está compuesta principalmente de dos componentes:
  • xml que contendrá la definición de la pantalla de configuración 
  • Actividad que herede de PreferenceActivity
En primer lugar vamos a crear un nuevo xml llamado preferencias.xml y lo situaremos dentro de /res/xml

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
    android:key="preferencias_principal" >
   <PreferenceCategory android:title="Categoría 1">
     <CheckBoxPreference
          android:key="activo"
          android:summary="Subtitulo de la propiedad"
          android:title="Título de la propiedad" />
   </PreferenceCategory>
    <ListPreference
        android:defaultValue="1"
        android:entries="@arrays/descripciones"
        android:entryValues="@arrays/valores"
        android:key="lista"
        android:summary="Título de la propiedad"
        android:title="Subtitulo de la propiedad" />
 
    <EditTextPreference
        android:defaultValue="texto por defecto"
        android:key="texto"
        android:summary="Título de la propiedad"
        android:title="Subtitulo de la propiedad" />
</PreferenceScreen>

Vamos a analizar el xml para explicar los distintos tipos de propiedades que hemos añadido.

A nivel de estructura general podemos ver que todas las etiquetas deben estar dentro de una etiqueta <PreferenceScreen>

La siguiente etiqueta que nos encontramos es <PreferenceCategory> la cual nos permitirá agrupar una o varias propiedades poniendo un título a esta. En la imagen de ejemplo del principio del post podemos ver una (Personalización)

Vamos ya con las etiquetas de propiedades, la primera de ellas es <CheckBoxPreference> la cual nos mostrará un CheckBox el cual podremos marcar o desmarcar. Esta etiqueta tiene varios atributos que son comunes para todas las etiquetas, como son key (clave con la que se guardará el valor), title (texto principal de la propiedad) y summary (texto secundario, aparece debajo del título y con menor tamaño)

La segunda de las etiquetas que vamos a analizar es <ListPreference>. Esta etiqueta nos mostrará al pulsarla una lista de elementos para que podamos seleccionar uno de ellos.
Aparte de los atributos comunes antes explicados esta etiqueta añade dos propiedades muy importantes, que son "entries" y "entryValues". En la primera deberemos indicar un array con la lista de los literales de los elementos que componen el listado, mientras que en el segundo, debemos añadir la lista de valores asociados a estos.

El array debemos crearlo en un fichero xml que podemos situarlo en /res/values/arrays.xml
Dicho xml podría ser algo así:

<resources>
    <string-array name="descripciones">
      <item>Elemento A</item>
      <item>Elemento B</item>
      <item>Elemento C</item>
    </string-array>
    <string-array name="valores">
      <item>0</item>
      <item>1</item>
      <item>2</item>
    </string-array>
</resources>

Lo último que deberemos hacer es crear una actividad que controle la pantalla de preferencias. Esta actividad deberá extender de PreferenceActivity y añadir el xml que contiene la definición de la pantalla de propiedades.

public class Preferencias extends PreferenceActivity {

    protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         addPreferencesFromResource(R.xml.preferencias);
    }
}

Ya solo quedaría dar de alta la actividad como normalmente hacemos en el fichero AndroidManifest.xml.

Espero que os haya servido de ayuda.

Comentarios

Entradas populares de este blog

Spring AI: First application

¡Hola! 👋 Si estás aquí, seguramente te pica la curiosidad sobre cómo integrar Inteligencia Artificial en tus aplicaciones Java sin complicarte la vida. Spring AI ha llegado para facilitarnos enormemente esta tarea, ofreciendo una abstracción unificada para interactuar con modelos como OpenAI, Azure, o incluso modelos locales con Ollama. En este tutorial,  vamos a crear juntos  un ejemplo muy sencillo: un endpoint REST que te permitirá charlar con una IA. ¡Verás que con muy pocas líneas de código tienes algo funcionando! ¿Qué necesitamos antes de empezar? Para seguir este tutorial sin problemas, asegúrate de tener a mano: Java 17  o superior (Spring Boot 3 lo requiere). Tu IDE favorito (IntelliJ, Eclipse, VS Code...). Una  API Key de OpenAI  (puedes conseguirla en  platform.openai.com ). Si prefieres no gastar créditos, al final te cuento cómo hacerlo gratis con Ollama. 1. Creando los cimientos del proyecto Lo más rápido es ir a  start.spring.io  ...

Android Studio, el nuevo entorno de desarrollo (I/O 2013)

Una de las novedades que nos ha dejado la conferencia Google I/0 2013 ha sido la publicación de un nuevo entorno de desarrollo que pasará a sustituir a Eclipse + SDK + ADT . El nuevo entorno pretende simplificar el desarrollo de aplicaciones, estando todo mucho más integrado y pensado para desarrollar específicamente para Android. Android Studio está basado en  IntelliJ IDEA (El cual para muchos desarrolladores está considerado el mejor IDE del mercado). El principal objetivo es hacerlo todo más usable y orientado a la programación en Android, por lo que para ello se han incluido nuevas refactorizaciones y quick fixes (soluciones rapidas) para corregir errores comunes, así como recomendaciones varias. Se ha incluido un nuevo editor gráfico mucho más potente (basado en drag-and-drop) que mejorará la experiencia y la edición de las pantallas (dicho sea de paso, el que teníamos hasta ahora era bastante mejorable). Este nuevo editor nos dará una vista previa más real del resul...

Instalación entorno desarrollo (Eclipse + plugin + SDK Android)

En este artículo explicaremos los principales pasos para la instalación del entrono de desarrollo de Android. La propuesta de Google y la que vamos a seguir en el manual es la siguiente: JRE (Java Runtime Environment) Eclipse Android SDK Eclipse Plug-in (Android Development Toolkit - ADT) Instalación JRE : El jre es la máquina virtual de java y es el software que nos permitirá ejecutar código java en nuestro equipo. La versión mínima requerida es la 5.0, y a no ser que necesitemos una versión especifica para otro software que usemos, recomiendo instalar la última versión disponible, en estos momentos va por la versión 7 (update 21) Podéis descargar el instalador de la siguiente ruta: http://java.com/inc/BrowserRedirect1.jsp Eclipse : Es el IDE recomendado por Google para desarrollar en Android, y puede que el más extendido para el desarrollo de aplicaciones Java. Podemos descargarlo de la url http://www.eclipse.org/downloads/ En principio cualquier versión que descarguéis...