У меня есть FragmentA и FragmentB. Я пытаюсь обновить значения FragmentA из FragmentB
У меня есть интерфейс:
interface FragmentCallback {
fun onDataSent(sendUpdatedData: String, position: Int?)
}
В FragmentA я переопределяю функцию интерфейса. Я также создаю экземпляр FragmentB и вызываю функцию setFragmentCallback
class FragmentA: Fragment(), FragmentCallback {
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
FragmentB().setFragmentCallback(this)
}
//This function is not being called from FragmentB...
override fun onDataSent(sendUpdatedData: String, position: Int?) {
updateRecyclerView(sendUpdatedData, position!!)
}
В FragmentB (который находится поверх FragmentA) я создаю экземпляр интерфейса FragmentCallback. Когда я закончу редактирование и вставлю фрагмент (backstack), я вызываю переопределенную функцию из FragmentA (onDataSent).
class FragmentB: Fragment(){
private var fragmentCallback: FragmentCallback? = null
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
btn_save.setOnClickListener{
fragmentCallback?.onDataSent(et_new_text.text.toString(), position )
fragmentManager?.popBackStack()
}
}
fun setFragmentCallback(callback: FragmentCallback?) {
fragmentCallback = callback
}
}
По какой-то причине, когда я открываю FragmentB и вызываю onDataSent
через строку :
fragmentCallback?.onDataSent(et_new_text.text.toString(), position)
onDataSent на самом деле НЕ будет вызываться.