旋转屏幕时,保留具有片段范围的ViewModels

4

我们正在使用支持库 v 25.+ 和新的架构组件 v 1.0.0-alpha3,我们发现 Fragment 范围内的 ViewModels 没有被正确地保留:

class MyFragment : LifecycleFragment() {

    protected lateinit var viewModel: MyViewModel

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        viewModel = ViewModelProviders.of(this).get(MyViewModel::class.java)
    }
}  

viewModel 在每次应用程序旋转时基本上被重新创建。可以通过改用Google示例中使用的 onActivityCreated 来解决此问题。 由于文档指出要使用 onCreate,我希望这是一个 fragment 或 ViewModelProvider 的 bug。
1个回答

2

经过与Android团队的咨询,我们发现这确实是SupportFragmentManager中存在的问题,在v 26.+中已经解决,因此需要切换到该版本。

26.0.0-beta2

现在已经得到帮助,ViewModels如预期般在onCreate中保留。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接