如何通过 viewModels 获取 viewModel? (片段-ktx)

新手上路,请多包涵

我正在为 Activity 及其所有片段使用 Single viewModel。

所以要初始化 viewmodel 如果必须在所有片段的 onActivityCreated 中编写此设置代码

    override fun onActivityCreated(savedInstanceState: Bundle?) {
        super.onActivityCreated(savedInstanceState)
        viewModel = ViewModelProviders.of(activity!!).get(NoteViewModel::class.java)
    }

我正在浏览 Android KTX 扩展页面:( 请参阅此处

我发现我可以像这样初始化视图模型:

     // Get a reference to the ViewModel scoped to this Fragment
    val viewModel by viewModels<MyViewModel>()

    // Get a reference to the ViewModel scoped to its Activity
    val viewModel by activityViewModels<MyViewModel>()

所以我在我的 gradle(app) 中添加了以下依赖项:

     //ktx android
    implementation 'androidx.core:core-ktx:1.0.2'
    implementation 'androidx.fragment:fragment-ktx:1.0.0'
    implementation "androidx.lifecycle:lifecycle-extensions:2.0.0"

但是当我尝试在我的应用程序中使用 viewModels/activityViewModels 时,他们的参考文献没有找到。

我想要帮助如何使用这些扩展程序和一些我尝试搜索示例但没有找到的基本示例。

原文由 Anmol 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 929
2 个回答

Atlast 我们有稳定的版本。

移至 implementation 'androidx.fragment:fragment-ktx:1.1.0' 我遇到了另一个问题。

###编译器错误:

无法将使用 JVM 目标 1.8 构建的字节码内联到使用 JVM 目标 1.6 构建的字节码

###build.gradle(模块:应用程序)

 compileOptions {
        sourceCompatibility = 1.8
        targetCompatibility = 1.8
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }

参考

应用上述所有问题后,问题得到解决。

原文由 Anmol 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题