将ViewModel保留在片段中

问题描述 投票:0回答:1

我正在与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)
    }
}
android android-viewmodel
1个回答
1
投票

是的,它的预期行为,看看this content

片段可以使用其活动范围共享ViewModel来处理此通信

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

ViewModelProviders.of(activity)
© www.soinside.com 2019 - 2024. All rights reserved.