es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Intentando guardar el valor de mi campo de texto editado después de cambiar de una actividad a otra y luego volver a la primera actividad en Jetpack Compose.

  1. Estoy intentando guardar el valor de mi campo de edición después de cambiar de una actividad a otra.
  2. Por ejemplo, como en un formulario de registro (primero tienes que llenar todos los datos en páginas y al final enviar).
  3. El problema que tengo aquí es que si quiero editar los datos de mi primera página, me muevo de la segunda página a la primera, pero mi primera página no muestra ningún dato.
  4. Intenté usar el save state y restore state de la navegación, pero no funcionó.
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para guardar el valor de EditText al cambiar de una actividad a otra en Android utilizando Jetpack Compose, puedes utilizar la función rememberSaveable para guardar y restaurar el estado del valor de EditText. En el código proporcionado, puedes modificar la función componible Page1 para utilizar rememberSaveable de la siguiente manera:

    @Composable
    fun Page1(navController: NavHostController) {
        var test by rememberSaveable { mutableStateOf("") }
    
        Column() {
            TextField(value = test, onValueChange = { test = it })
            Button(
                onClick = {
                    navController.navigate(ScreenRoute.Page2.name) {
                        popUpTo(ScreenRoute.Page2.name) { saveState = true }
                        launchSingleTop = true
    
                        restoreState = true
                    }
                }
            ) {}
    
            Text(text = "Page1")
        }
    }
    

    La función rememberSaveable toma un lambda que define el estado inicial del valor y devuelve un contenedor de estado que guarda y restaura automáticamente el valor durante cambios de configuración como rotación o recreación de la actividad.

    Con esta modificación, el valor de EditText en Page1 debería guardarse al navegar a Page2 y restaurarse al navegar de vuelta a Page1.

Comments are closed.