Sobes.tech
Middle

Wie organisiert man die Interaktion zwischen einer Activity und einem Fragment?

sobes.tech KI

Antwort von AI

Die Interaktion zwischen einer Activity und einem Fragment in Android kann auf verschiedene Weisen organisiert werden:

  1. Über Schnittstellen. Das Fragment deklariert eine Schnittstelle mit Callback-Methoden, die von der Activity implementiert werden. Das Fragment ruft diese Methoden auf, um Daten oder Ereignisse an die Activity zu übermitteln.
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) {
        // Verarbeitung der Daten aus dem Fragment
    }
}
  1. Verwendung von ViewModel mit dem Lebenszyklus der Activity. Ein gemeinsames ViewModel ermöglicht es der Activity und dem Fragment, Daten über LiveData auszutauschen.
class SharedViewModel : ViewModel() {
    val data = MutableLiveData<String>()
}

// In der Activity und im Fragment
val model = ViewModelProvider(requireActivity()).get(SharedViewModel::class.java)

// Das Fragment aktualisiert die Daten
model.data.value = "Neuer Wert"

// Die Activity beobachtet die Änderungen
model.data.observe(this) { value ->
    // Verarbeitung des Wertes
}
  1. Verwendung von EventBus (z.B. Otto, EventBus) — Publish-Subscribe-Muster zum Austausch von Ereignissen.

  2. Übergabe von Argumenten über Bundle beim Erstellen des Fragments. Dies dient dazu, Daten von der Activity an das Fragment zu übergeben.

Die Wahl der Methode hängt von der Aufgabe und der Architektur der Anwendung ab.