Это моя фабрика SessionViewModel
class SessionViewModelFactory(
private val sessionId: String
) : ViewModelProvider.NewInstanceFactory() {
@Suppress("unchecked_cast")
override fun <T : ViewModel?> create(modelClass: Class<T>): T {
return if (modelClass.isAssignableFrom(SessionViewModel::class.java)) {
SessionViewModel(
sessionId = sessionId,
sessionRepository = SessionRepository(
WebserviceGenerator.webservice,
AppDatabase.getDatabase()?.questionDao()
)
) as T
} else {
throw IllegalArgumentException("ViewModel Not Found")
}
}
}
Я хочу, чтобы SessionViewModel был общим для всех фрагментов, имеющих одинаковый идентификатор сессии.
Пример: Предположим, у нас есть фрагменты, как в следующем фрагменте # 1 имеет sessionId "a". Фрагмент # 2 имеет sessionId "a". Фрагмент # 3 имеет идентификатор сеанса "b". Фрагмент # 4 имеет идентификатор сеанса "b".
Тогда у фрагмента № 1 и фрагмента № 2 должен быть один и тот же экземпляр SessionViewModel. Фрагмент № 3 и фрагмент № 4 должны иметь один и тот же экземпляр SessionViewModel.