我正在与ViewModel
和片段合作,并希望保留我的ViewModel
我的片段旋转变化。当我将Fragment
传递给ViewModelProviders.of()
时,它不会被保留,但是当我通过该片段所属的Activity
时,它会被保留。所以通过活动应该如何使用它?在ViewModelProviders.of(this)
中调用Fragment
不会保留我的ViewModel
。这是预期的行为吗?
class MainFragment : Fragment() {
private lateinit var viewModel: MainViewModel
fun OnXXXXXXXXX {
// This _will NOT_ retain ViewModel
viewModel = ViewModelProviders.of(this).get(MainViewModel::class.java)
// This _will_ retain ViewModel
viewModel = ViewModelProviders.of(activity).get(MainViewModel::class.java)
}
}
是的,它的预期行为,看看this content
片段可以使用其活动范围共享ViewModel来处理此通信
如果要共享相同的ViewModel,请使用相同的上下文。例如,相同活动的多个片段:
ViewModelProviders.of(activity)