Sobes.tech
Middle

როგორ დავგეგმოთ აქტივობისა და ფრაგმენტის ურთიერთქმედება?

sobes.tech AI

პასუხი AI-სგან

Android-ში Activity და ფრაგმენტის ურთიერთქმედება რამდენიმე გზით შეიძლება ორგანიზებულ იქნას:

  1. ინტერფეისების საშუალებით. ფრაგმენტი გამოაცხადებს callback მეთოდებს, რომლებიც ახორციელებს Activity. ფრაგმენტი ამ მეთოდებს იძახის მონაცემების ან მოვლენების გადასაცემად 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) {
        // მონაცემების დამუშავება ფრაგმენტიდან
    }
}
  1. ViewModel-ის გამოყენება და Activity-ის სიცოცხლის ციკლთან ერთად. საერთო ViewModel საშუალებას აძლევს Activity-ს და ფრაგმენტს გაცვალონ მონაცემები LiveData-ის მეშვეობით.
class SharedViewModel : ViewModel() {
    val data = MutableLiveData<String>()
}

// Activity-ში და ფრაგმენტში
val model = ViewModelProvider(requireActivity()).get(SharedViewModel::class.java)

// ფრაგმენტი განაახლებს მონაცემებს
model.data.value = "ახალი მნიშვნელობა"

// Activity-ს უყურადღებობს ცვლილებებს
model.data.observe(this) { value ->
    // მონაცემების დამუშავება
}
  1. EventBus-ის გამოყენება (მაგ., Otto, EventBus) — გამოქვეყნება-მონაწერი ნიმუში მოვლენების გაცვლისთვის.

  2. Arguments-ის გადაცემა Bundle-ის მეშვეობით ფრაგმენტის შექმნისას — მონაცემების გადაცემა Activity-დან ფრაგმენტში.

მეთოდის არჩევა დამოკიდებულია ამოცანაზე და აპლიკაციის არქიტექტურაზე.