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.

¿Cómo puedo acceder a mi variable declarada en MainActivity desde mis fragmentos?

Necesito enviar datos de un fragmento a otro y no puedo lograr que funcione.
¿Alguien tiene alguna idea?

Aquí hay algunas partes del código en MainActivity.kt :

lateinit var movieId: String

fun setMovie(movietitle: String){
        this.movieId = movietitle
    }
    fun getMovie(): String {
        return movieId
    }

Esto está en el primer fragmento:

var movieId: TextView = view.findViewById<edittext>(R.id.TitleId)

(activity as MainActivity).setMovie(movieId.toString())

Y este es el fragmento donde quiero recibir la cadena:

searchMovieByTitle((activity as MainActivity).getMovie())

¿Hay alguna otra forma en la que pueda recibir los datos?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Una forma alternativa de enviar datos entre fragmentos es utilizar argumentos de paquete. Aquí tienes un ejemplo:

    En el primer fragmento, crea un paquete y establece el título de la película como argumento:

    val bundle = Bundle()
    bundle.putString("movieTitle", movieId.text.toString())
    
    val secondFragment = SecondFragment()
    secondFragment.arguments = bundle
    
    

    En el segundo fragmento, recupera el título de la película de los argumentos:

    val movieTitle = arguments?.getString("movieTitle")
    

    Entonces puedes utilizar la variable movieTitle para manejar los datos recibidos.

    Nota: Asegúrate de comprobar si los argumentos no son nulos antes de recuperar los datos.

    Como alternativa, puedes utilizar LiveData para observar cambios y pasar datos entre fragmentos. Este enfoque requiere más configuración y puede que no sea necesario para escenarios simples de paso de datos.

Comments are closed.