Configuraciones   Part of Android Jetpack.

Las configuraciones permiten que los usuarios modifiquen las funciones y los comportamientos de una aplicación. Pueden afectar al comportamiento en segundo plano, como la frecuencia con la que la aplicación sincroniza datos con la nube, o pueden tener un alcance más amplio, como cambiar el contenido y la presentación de la interfaz de usuario.

La forma recomendada de integrar configuraciones que pueda ajustar el usuario en la aplicación es utilizar la Biblioteca de Preference de AndroidX. Esta biblioteca administra la interfaz de usuario e interactúa con el almacenamiento, de forma que solo se definen las configuraciones individuales que el usuario puede ajustar. La biblioteca incluye un tema de Material que proporciona una experiencia del usuario coherente en todos los dispositivos y versiones de SO.

Primeros pasos

El bloque de compilación básico de una Biblioteca de Preference es el elemento Preference. Una pantalla de configuración contiene una jerarquía de Preference. Puedes definir esta jerarquía como un recurso XML, o bien compilar una jerarquía usando código.

Las secciones que se indican a continuación describen cómo compilar una pantalla de configuración simple usando la Biblioteca de Preference de AndroidX.

Cómo crear una jerarquía

El siguiente ejemplo muestra una jerarquía simple que se define mediante XML:

<androidx.preference.PreferenceScreen
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <SwitchPreferenceCompat
        app:key="notifications"
        app:title="Enable message notifications"/>

    <Preference
        app:key="feedback"
        app:title="Send feedback"
        app:summary="Report technical issues or suggest new features"/>

</androidx.preference.PreferenceScreen>

Esta jerarquía contiene dos Preferences individuales: un SwitchPreferenceCompat que le permite al usuario activar o desactivar una opción, y un elemento Preference básico que no posee ningún widget.

Cuando se compila una jerarquía, cada Preference debe tener una clave única.

Cómo ampliar la jerarquía

Para ampliar una jerarquía a partir de un atributo XML, crea un PreferenceFragmentCompat, anula onCreatePreferences() y agrega el recurso XML que quieras ampliar, tal como se indica en el siguiente ejemplo:

Kotlin

class MySettingsFragment : PreferenceFragmentCompat() {
    override fun onCreatePreferences(savedInstanceState: Bundle, rootKey: String) {
        setPreferencesFromResource(R.xml.preferences, rootKey)
    }
}

Java

public class MySettingsFragment extends PreferenceFragmentCompat {
    @Override
    public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
        setPreferencesFromResource(R.xml.preferences, rootKey);
    }
}

Luego, podrás agregar este Fragment a tu Activity de la misma forma en que lo harías con otro Fragment:

Kotlin

class MySettingsActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        supportFragmentManager
                .beginTransaction()
                .replace(R.id.settings_container, MySettingsFragment())
                .commit()
    }
}

Java

public class MySettingsActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getSupportFragmentManager()
                .beginTransaction()
                .replace(R.id.settings_container, new MySettingsFragment())
                .commit();
    }
}