Ответ
В Koin можно использовать viewModel и fragment с параметрами, чтобы создавать уникальные экземпляры для каждого фрагмента. Для этого:
- ViewModel с параметром:
val module = module {
viewModel { (id: String) -> MyViewModel(id) }
}
- Fragment с параметром:
class MyFragment : Fragment() {
private val viewModel: MyViewModel by viewModel { parametersOf("unique_id") }
}
- Создание фрагмента:
supportFragmentManager.beginTransaction()
.replace(R.id.container, MyFragment::class.java, null)
.commit()
Ключевые моменты:
- Каждый фрагмент получает свою ViewModel с уникальным параметром
- Параметры передаются через
parametersOf() - Koin автоматически управляет жизненным циклом ViewModel