android - 如何通过 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
在我的应用程序中使用他们的参考时找不到。
我想要帮助如何使用这些扩展程序和一些我尝试搜索示例但没有找到的基本示例。
解决方案
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"
}
应用上述所有问题后,问题得到解决。
感谢大家。
推荐阅读
- windows - 有没有办法从 Windows SDK 上的红外传感器获取无人机的高度?
- mysql - mysql查询连接两个表以查找未出现在右表上的元素
- reactjs - Express 或 react 正在删除标题
- jquery - 在 Google Chat 中创建新话题 - 如何发送新的指定话题密钥?
- javascript - 我如何在reactjs中更新获取请求
- json - 如何在golang中打印json值
- ios - iOS 订阅 DID_CHANGE_RENEWAL_STATUS 通知:latest_expired_receipt vs latest_receipt
- android - TouchOpacity 组件设置为在 android 中定位绝对不可点击
- java - 尝试使用 gzip 编码但得到 400 响应的 HTTPUrlConnection 编写 post 语句
- java - 根据另一个字符串数组的值,仅从数组中提取某些对象