Назад к вопросам
Junior — Middle
83
Какими методами осуществляется взаимодействие между Fragment, находящимися в одной Activity?
Ответ от нейросети
sobes.tech AI
Взаимодействие между фрагментами в одной Activity обычно реализуется через Activity, которая выступает посредником. Основные методы:
-
Через интерфейс обратного вызова (Callback Interface)
- Фрагмент объявляет интерфейс с методами для передачи данных.
- Activity реализует этот интерфейс и получает данные от одного фрагмента.
- Activity передаёт данные другому фрагменту.
-
Использование ViewModel с жизненным циклом Activity (Shared ViewModel)
- Создаётся ViewModel, связанная с Activity.
- Оба фрагмента получают доступ к одной и той же ViewModel.
- Через LiveData или другие observable объекты фрагменты обмениваются данными.
-
Использование FragmentManager для поиска фрагментов и вызова их методов напрямую
- Менее предпочтительный способ, так как увеличивает связанность.
Пример с интерфейсом:
// В Fragment A
interface OnDataPass {
fun onDataPass(data: String)
}
class FragmentA : Fragment() {
lateinit var dataPasser: OnDataPass
override fun onAttach(context: Context) {
super.onAttach(context)
dataPasser = context as OnDataPass
}
fun passData() {
dataPasser.onDataPass("Привет от FragmentA")
}
}
// В Activity
class MainActivity : AppCompatActivity(), FragmentA.OnDataPass {
override fun onDataPass(data: String) {
val fragmentB = supportFragmentManager.findFragmentById(R.id.fragmentB) as FragmentB
fragmentB.updateData(data)
}
}