Android – Architecture – How to listen child fragment update from parent fragment?

Child fragment

Add listener interface

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
private var dataChangeListener: DataChangeListener? = null
...
fun setDataChangeListener(dataChangeListener: DataChangeListener) {
this.dataChangeListener = dataChangeListener
}
interface DataChangeListener {
fun onDataChange()
}
private var dataChangeListener: DataChangeListener? = null ... fun setDataChangeListener(dataChangeListener: DataChangeListener) { this.dataChangeListener = dataChangeListener } interface DataChangeListener { fun onDataChange() }
private var dataChangeListener: DataChangeListener? = null

...

fun setDataChangeListener(dataChangeListener: DataChangeListener) {
        this.dataChangeListener = dataChangeListener
    }

interface DataChangeListener {
    fun onDataChange()
}

Call listener when something occurs

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
fun updateSomeStuffs() {
...
dataChangeListener?.onDataChange()
...
}
fun updateSomeStuffs() { ... dataChangeListener?.onDataChange() ... }
fun updateSomeStuffs() {
    ...
    dataChangeListener?.onDataChange()
    ...
}

Parent fragment

Attach listener to child fragment where it is called

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
class ParentFragment : BaseFragment(), Contract.View, DataChangeListener {
...
override fun onDataChange() {
// Update parent fragment here
}
...
}
class ParentFragment : BaseFragment(), Contract.View, DataChangeListener { ... override fun onDataChange() { // Update parent fragment here } ... }
class ParentFragment : BaseFragment(), Contract.View, DataChangeListener {
    ...
    
    override fun onDataChange() {
        // Update parent fragment here
    }

    ...
}

Implement listener

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
val childFragment = ChildFragment()
childFragment.setDataChangeListener(this)
val childFragment = ChildFragment() childFragment.setDataChangeListener(this)
 val childFragment = ChildFragment()
 childFragment.setDataChangeListener(this)

Be the first to comment

Leave a Reply

Your email address will not be published.


*