首页 > 解决方案 > 如何通过 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在我的应用程序中使用他们的参考时找不到。

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

标签: androidandroidxandroid-jetpackkotlin-android-extensionsandroid-viewmodel

解决方案


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"
    }

参考

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

感谢大家。


推荐阅读