Ответ
Для передачи объектов между фрагментами в Android есть несколько подходов:
- Аргументы (Bundle) - через
setArguments():
val fragment = MyFragment().apply {
arguments = bundleOf("key" to myObject)
}
- ViewModel (лучший способ для данных, связанных с UI):
class SharedViewModel : ViewModel() {
val sharedData = MutableLiveData<MyObject>()
}
// В обоих фрагментах:
val viewModel: SharedViewModel by activityViewModels()
- Интерфейсы (через родительскую Activity):
interface FragmentCommunicator {
fun passData(data: MyObject)
}
- Shared Preferences/Room - для сохранения между сессиями.
Рекомендации:
- Для простых данных - Bundle
- Для сложных/живых данных - SharedViewModel
- Избегайте прямых ссылок между фрагментами
- Для Parcelable объектов используйте SafeArgs (Gradle plugin)