Что используешь если надо передать объект с фрагмента на фрагмент

«Что используешь если надо передать объект с фрагмента на фрагмент» — вопрос из категории Android компоненты, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Для передачи объектов между фрагментами в Android есть несколько подходов:

  1. Аргументы (Bundle) - через setArguments():
val fragment = MyFragment().apply {
    arguments = bundleOf("key" to myObject)
}
  1. ViewModel (лучший способ для данных, связанных с UI):
class SharedViewModel : ViewModel() {
    val sharedData = MutableLiveData<MyObject>()
}

// В обоих фрагментах:
val viewModel: SharedViewModel by activityViewModels()
  1. Интерфейсы (через родительскую Activity):
interface FragmentCommunicator {
    fun passData(data: MyObject)
}
  1. Shared Preferences/Room - для сохранения между сессиями.

Рекомендации:

  • Для простых данных - Bundle
  • Для сложных/живых данных - SharedViewModel
  • Избегайте прямых ссылок между фрагментами
  • Для Parcelable объектов используйте SafeArgs (Gradle plugin)