El sistema Android activa un cambio de configuración cada vez que se conecta o desconecta un teclado de un dispositivo. Para garantizar una experiencia del usuario fluida y maximizar su productividad en dispositivos con pantallas grandes y teclados desmontables, tu app debe administrar de manera eficaz los cambios de configuración del teclado.
Cómo evitar la recreación de actividades cuando se cambia el teclado
Para evitar que tu actividad se vuelva a crear 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 cambios de configuración.
1. Declara el atributo configChanges
Para actualizar el elemento <activity>
en el manifiesto de la app, agrega los valores keyboard|keyboardHidden
a la lista de cambios de configuración ya administrados:
<activity
...
android:configChanges="...|keyboard|keyboardHidden">
2. Cómo agregar una vista vacía a la jerarquía de vistas
Declara una vista nueva y agrega tu código de 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 app.
Resultados
Tu app ahora responde cuando se conecta o desconecta un teclado externo sin volver a crear la actividad en ejecución.
Colecciones que contienen esta guía
Esta guía forma parte de estas colecciones de guías rápidas seleccionadas que abarcan objetivos más amplios de desarrollo de Android:
![](https://developer.android.google.cn/static/images/quick-guides/collection-illustration.png?hl=es-419)