Sobes.tech
Middle

Ինչպե՞ս կազմակերպել Activity և ֆրագմենտի փոխազդեցությունը։

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-ից ֆրագմենտ։

Ընտրությունը կախված է առաջադրանքի և ծրագրի ճարտարապետությունից։