Junior — Middle
How can data transfer between components inside a Fragment be implemented most efficiently?
sobes.tech AI
Answer from AI
For effective data transfer between components within a single Fragment, several approaches can be used:
- ViewModel with LiveData — the most recommended method. A ViewModel is created, associated with the fragment's lifecycle, and stores data. Components within the fragment subscribe to changes in LiveData and receive updates.
Example:
class MyViewModel : ViewModel() {
val data = MutableLiveData<String>()
}
// In Fragment
val viewModel = ViewModelProvider(this).get(MyViewModel::class.java)
// Component 1 updates data
viewModel.data.value = "New value"
// Component 2 observes changes
viewModel.data.observe(viewLifecycleOwner) { value ->
// update UI
}
-
Interfaces and callbacks — if components are nested classes or custom Views, an interface can be defined for event passing.
-
Shared Preferences or Bundle — less effective for dynamic transfer, more suitable for saving state.
Using ViewModel ensures separation of concerns, simplifies state management, and prevents memory leaks.