0

我正在与 Fragments 合作ViewModel,并希望ViewModel在旋转更改时保留我的 Fragment。当将 my 传递给FragmentViewModelProviders.of()时,它不会被保留,但是当我传递Activity片段所属的 时,它会被保留。那么传递活动应该如何使用?呼入不会保留我ViewModelProviders.of(this)的. 这是预期的行为吗?FragmentViewModel

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)
    }
}
4

1 回答 1

1

是的,它的预期行为,看看这个内容

片段可以共享一个 ViewModel 使用它们的活动范围来处理这种通信

如果要共享相同的 ViewModel,请使用相同的上下文。例如,同一活动上的多个片段:

ViewModelProviders.of(activity)
于 2018-09-05T13:37:39.450 回答