【发布时间】:2020-07-31 17:21:07
【问题描述】:
这是我的 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 在具有相同 sessionId 的所有片段之间共享。
示例: 假设我们有如下片段 片段 #1 的 sessionId 为“a”。 片段 #2 的 sessionId 为“a”。 片段 #3 的 sessionId 为“b”。 片段 #4 的 sessionId 为“b”。
那么, Fragment #1 和 Fragment #2 应该具有相同的 SessionViewModel 实例。 Fragment #3 和 Fragment #4 应该具有相同的 SessionViewModel 实例。
【问题讨论】:
标签: android android-fragments mvvm viewmodel android-viewmodel