【问题标题】:'ViewModelProviders' is deprecated. After upgrading lifecycle-extensions:2.1.0 to 2.2.0-alpha05'ViewModelProviders' 已弃用。升级生命周期扩展后:2.1.0 到 2.2.0-alpha05
【发布时间】:2019-09-28 13:03:54
【问题描述】:

Android Studio -> 新建项目 -> 选择“选项卡式活动”。

在将生命周期扩展从 2.1.0 升级到 2.2.0-alpha05 后,不推荐使用 ViewModelProviders。 在简单的情况下,它可以替换为“by viewModels()” 例如:

plHlFrModel = ViewModelProviders.of(this).get(PlHlFrModel::class.java)

替换为:

private val plHlFrModel by viewModels<PlHlFrModel>()

但我不知道如何替换这个:

pageViewModel =  ViewModelProviders.of(this)
     .get(PageViewModel::class.java).apply {
         setIndex(arguments?.getInt(ARG_SECTION_NUMBER) ?: 1)
      }

在哪里以及如何将 apply{} 块放置在“by viewModel”表单中? 也许还有其他方法?

【问题讨论】:

    标签: android android-viewmodel kotlin-android-extensions


    【解决方案1】:

    ViewModelProviers 已弃用,我们只使用ViewModelProvider

    直接访问

    pageViewModel = ViewModelProvider(this)
         .get(PageViewModel::class.java).apply {
             setIndex(arguments?.getInt(ARG_SECTION_NUMBER) ?: 1)
          }
    

    使用委托

    private val pageViewModel by viewModels<PageViewModel>()
    
    //function scope
    pageViewModel.setIndex(arguments?.getInt(ARG_SECTION_NUMBER) ?: 1)
    

    【讨论】:

      【解决方案2】:

      Java 中不要使用ViewModelProviders.of(this),而是使用ViewModelProvider(This) new ViewModelProvider(this).get(Vm.class);

      【讨论】:

      • 如何通过 Java 实现这个? ViewModelProvider(this).get(MyViewModel.class) 不适用于 Java ('androidx.lifecycle:lifecycle-extensions:2.2.0-rc03')
      【解决方案3】:
      viewModel = ViewModelProviders.of(this).get(vm.class); // is deprecate
      
      viewModel = new ViewModelProvider(this).get(vm.class); // is true
      

      【讨论】:

        【解决方案4】:
        viewModel = new ViewModelProvider(this).get(vm.class);
        

        这仅适用于此依赖项:

        implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2022-01-19
          • 1970-01-01
          • 2015-09-24
          • 1970-01-01
          • 2017-08-21
          • 1970-01-01
          • 2019-05-23
          • 1970-01-01
          相关资源
          最近更新 更多