Назад к вопросам
Middle
69
questionbank
Как можно организовать коммуникацию между фрагментами используя колбеки?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Создать интерфейс в одном фрагменте:
interface MyCallback {
fun onDataPassed(data: String)
}
Реализовать этот интерфейс в родительской Activity или другом фрагменте/классе, который будет посредником:
class MyActivity : AppCompatActivity(), MyCallback {
override fun onDataPassed(data: String) {
// Логика обработки данных, например, передать их другому фрагменту
}
}
В первом фрагменте получить ссылку на этот колбэк:
class FirstFragment : Fragment() {
private var callback: MyCallback? = null
override fun onAttach(context: Context) {
super.onAttach(context)
if (context is MyCallback) {
callback = context
} else {
throw RuntimeException("$context must implement MyCallback")
}
}
fun sendData(data: String) {
callback?.onDataPassed(data)
}
}
В вызывающем коде первого фрагмента вызвать метод для отправки данных:
// ... где-то в FirstFragment
sendData("Hello from Fragment 1")
Метод onAttach гарантирует, что родительский контекст реализует необходимый интерфейс, предотвращая ClassCastException. При использовании нескольких фрагментов и сложной логики предпочтительнее использовать ViewModel или другие архитектурные компоненты для организации связи.