Middle
Activity менен фрагменттин өз ара аракеттенүүсүн кантип уюштуруу керек?
sobes.tech AI
AIден жооп
Androidда Activity менен фрагменттин өз ара аракеттешүүсү бир нече жол менен уюштурулушу мүмкүн:
- Интерфейстер аркылуу. Фрагмент 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) {
// Фрагменттен келген маалыматтарды иштетүү
}
}
- ViewModel колдонуу жана Activityнин жашоо цикли менен. Жалгыз ViewModel Activity жана фрагменттин ортосунда маалымат алмашууга мүмкүндүк берет.
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 ->
// Маалыматты иштетүү
}
-
EventBus колдонуу (мисалы, Otto, EventBus) — окуялар менен бөлүшүү үчүн жарыялоо-каттоо үлгүсү.
-
Аргументтерди Bundle аркылуу өткөрүү — фрагментти түзүүдө Activityден фрагментке маалымат берүү.
Метод тандоо тапшырга жана колдонмонун архитектурасына көз каранды.