Sobes.tech
Middle

Πώς οργανώνουμε την αλληλεπίδραση μεταξύ μιας δραστηριότητας και ενός τμήματος;

sobes.tech AI

Απάντηση από AI

Η αλληλεπίδραση μεταξύ μιας δραστηριότητας και ενός τμήματος στο Android μπορεί να οργανωθεί με διάφορους τρόπους:

  1. Μέσω διεπαφών. Το τμήμα δηλώνει μια διεπαφή με μεθόδους callback, τις οποίες υλοποιεί η δραστηριότητα. Το τμήμα καλεί αυτές τις μεθόδους για να μεταφέρει δεδομένα ή γεγονότα στη δραστηριότητα.
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) {
        // Επεξεργασία δεδομένων από το τμήμα
    }
}
  1. Χρήση ViewModel με τον κύκλο ζωής της δραστηριότητας. Ένα κοινό ViewModel επιτρέπει στη δραστηριότητα και το τμήμα να ανταλλάσσουν δεδομένα μέσω LiveData.
class SharedViewModel : ViewModel() {
    val data = MutableLiveData<String>()
}

// Στη δραστηριότητα και το τμήμα
val model = ViewModelProvider(requireActivity()).get(SharedViewModel::class.java)

// Το τμήμα ενημερώνει τα δεδομένα
model.data.value = "Νέα τιμή"

// Η δραστηριότητα παρακολουθεί τις αλλαγές
model.data.observe(this) { value ->
    // Επεξεργασία της τιμής
}
  1. Χρήση EventBus (π.χ., Otto, EventBus) — πρότυπο δημοσίευσης-εγγραφής για ανταλλαγή γεγονότων.

  2. Μεταβίβαση επιχειρημάτων μέσω Bundle κατά τη δημιουργία του τμήματος — για τη μεταφορά δεδομένων από τη δραστηριότητα στο τμήμα.

Η επιλογή της μεθόδου εξαρτάται από το έργο και την αρχιτεκτονική της εφαρμογής.