这是我的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")
}
}
}
我希望在所有具有相同sessionId的片段之间共享SessionViewModel。
示例: 假设我们有以下片段 片段#1的sessionId为“ a”。 片段#2的sessionId为“ a”。 片段#3的sessionId为“ b”。 片段#4的sessionId为“ b”。
然后, 片段1和片段2应该具有SessionViewModel的相同实例。 片段3和片段4应该具有相同的SessionViewModel实例。
答案 0 :(得分:0)
好吧,在您的应用运行时,viewmodel存在。 好处是:当您的活动/片段被杀死时,它不会被杀死。
您可以从不同片段中调用相同的视图模型。
假设您有
var myQuantity
在您的视图模型内部。
例如,您可以从片段A中调用viewmodel并将myQuantity值设置为5。 然后从片段B中调用viewmodel并获取myQuantity值,将得到5
您找不到更多here(如何调用视图模型,...)