android - 如何通过viewModels获取viewModel? ( fragment -ktx)

标签 android androidx android-jetpack kotlin-android-extensions android-viewmodel

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

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

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

我正在浏览 Android KTX 扩展页面:( refer here )

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

    // 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 时,找不到它们的引用。

我需要有关如何将这些扩展与一些基本示例一起使用的帮助,我尝试搜索示例但未找到任何示例。

最佳答案

终于有了稳定版。

在移动到implementation 'androidx.fragment:fragment-ktx:1.1.0' 之后,我遇到了另一个问题。

###编译器错误:

Cannot inline bytecode built with JVM target 1.8 into bytecode that is being built with JVM target 1.6

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

compileOptions {
        sourceCompatibility = 1.8
        targetCompatibility = 1.8
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }

reference

应用以上所有内容后,问题就解决了。

关于android - 如何通过viewModels获取viewModel? ( fragment -ktx),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56748334/

相关文章:

java - 数组索引递减

java - 如何将 Android Wear Activity 类导入移动 Activity 类?

android - 播放服务广告与 appcompat 冲突

添加 androidx.fragment :fragment-testing dependency 后,AndroidTests 停止构建

android - Jetpack 撰写 Material 设计 3 具有圆角边缘的卡片 View 未由图像或波纹动画填充

java - ORMLite - 具有相同列的多个索引

java - 离线 HTML Android 应用程序中的数据库?

android - 如何在 Android 中设置 Navcontroller?

android - 带有嵌套导航图的 Arch 新导航组件