El sistema Android activa un cambio de configuración cada vez que se conecta o desconecta un teclado de un dispositivo. Para proporcionar una experiencia del usuario fluida y maximizar la productividad del usuario en dispositivos con pantallas grandes y teclados desmontables, tu app debe administrar de manera eficaz los cambios en la configuración del teclado.
Resultados
Tu app responde a la conexión o desconexión de un teclado externo sin volver a crear la actividad en ejecución.
Cómo evitar la recreación de la actividad cuando cambia el teclado
Para evitar que se vuelva a crear tu actividad cuando se conecta o desconecta un teclado desmontable, agrega valores relacionados con el teclado al atributo configChanges
del manifiesto de tu app y agrega una vista a la jerarquía de vistas de la actividad para que tu app pueda detectar los cambios de configuración.
1. Declara el atributo configChanges
Actualiza el elemento <activity>
en el manifiesto de la app agregando los valores de keyboard|keyboardHidden
a la lista de cambios de configuración ya administrados:
<activity
...
android:configChanges="...|keyboard|keyboardHidden">
2. Agrega una vista vacía a la jerarquía de vistas
Declara una vista nueva y agrega el código del controlador dentro del método onConfigurationChanged()
de la vista:
Kotlin
val v = object : View(this) { override fun onConfigurationChanged(newConfig: Configuration?) { super.onConfigurationChanged(newConfig) // Handler code here. } }
Java
View v = new View(this) { @Override protected void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); // Handler code here. } };
Puntos clave
android:configChanges
: Es el atributo del elemento<activity>
del manifiesto de la app. Informa al sistema sobre los cambios de configuración que administra la app.View#onConfigurationChanged()
: Método que reacciona a la propagación de una nueva configuración de la app.
Colecciones que contienen esta guía
Esta guía forma parte de las colecciones seleccionadas de Guías rápidas que abarcan objetivos más amplios de desarrollo para Android:
