Sobes.tech
Middle

¿Cómo organizar la interacción entre una Activity y un fragmento?

sobes.tech AI

Respuesta de la IA

La interacción entre una Activity y un fragmento en Android se puede organizar de varias maneras:

  1. A través de interfaces. El fragmento declara una interfaz con métodos de devolución de llamada, que implementa la Activity. El fragmento llama a estos métodos para transmitir datos o eventos a la Activity.
class MyFragment : Fragment() {
    interface OnDataPass {
        fun onDataPass(data: String)
    }

    private lateinit var dataPasser: OnDataPass

    override fun onAttach(context: Context) {
        super.onAttach(context)
        dataPasser = context as OnDataPass
    }

    fun passData(data: String) {
        dataPasser.onDataPass(data)
    }
}

class MyActivity : AppCompatActivity(), MyFragment.OnDataPass {
    override fun onDataPass(data: String) {
        // Procesar datos del fragmento
    }
}
  1. Uso de ViewModel con el ciclo de vida de la Activity. Un ViewModel compartido permite que la Activity y el fragmento intercambien datos a través de LiveData.
class SharedViewModel : ViewModel() {
    val data = MutableLiveData<String>()
}

// En la Activity y el fragmento
val model = ViewModelProvider(requireActivity()).get(SharedViewModel::class.java)

// El fragmento actualiza los datos
model.data.value = "Nuevo valor"

// La Activity observa los cambios
model.data.observe(this) { value ->
    // Procesar el valor
}
  1. Uso de EventBus (por ejemplo, Otto, EventBus) — patrón de publicación-suscripción para intercambiar eventos.

  2. Pasar argumentos a través de Bundle al crear el fragmento — para transmitir datos desde la Activity al fragmento.

La elección del método depende de la tarea y la arquitectura de la aplicación.