Android中创建ViewModel的几种方法

embedded/2025/1/6 6:14:00/

文章目录

  • 1. 使用 `ViewModelProvider`
  • 2. 使用 `ViewModelFactory`
  • 3. 使用 `by viewModels()` 委托
    • 3.1 添加扩展库依赖
    • 3.2 在Fragment 中使用 `by viewModels()`
    • 3.3 在 Activity 中使用 `by viewModels()`
  • 4. 总结

在Android中,ViewModel 是一种用于管理与UI相关的数据的架构组件。它的生命周期与 ActivityFragment 的生命周期相独立,能够有效地处理配置更改(如旋转屏幕)而不会丢失数据。以下是创建 ViewModel 的几种常见方式。

ViewModelProvider_4">1. 使用 ViewModelProvider

这是最常用的方式,适用于 ActivityFragment

ViewModel_7">1.1 在 Activity 中创建 ViewModel

定义一个自己的 ViewModel 类:MyViewModel

class MyViewModel: ViewModel() { }

在 Activity 中创建 MyViewModel 的对象,关键代码:ViewModelProvider(this).get(MyViewModel::class.java)

class MyActivity : AppCompatActivity() {private lateinit var viewModel: MyViewModeloverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)viewModel = ViewModelProvider(this).get(MyViewModel::class.java)}
}

ViewModel_25">1.2 在 Fragment 中创建 ViewModel

在 Fragment 中创建 MyViewModel 的对象,也是使用 ViewModelProvider。 关键代码:ViewModelProvider(requireActivity()).get(MyViewModel::class.java)

class MyFragment : Fragment() {private <

http://www.ppmy.cn/embedded/151388.html

相关文章

推荐PWM通信控制电机应用32位单片机

电机控制MCU是现代电机驱动系统中不可或缺的核心组件。这些高性能的微处理器不仅具备强大的计算能力&#xff0c;还拥有丰富的外设接口&#xff0c;能够与各种传感器和执行器无缝连接。 在使用MCU进行脉冲宽度调制&#xff08;PWM&#xff09;通信以控制电机的应用中&#xff…

高速网络数据包处理中的内核旁路技术

该PPT详细介绍了Linux网络栈中数据包的传输路径、内核旁路技术的必要性以及具体的内核旁路技术&#xff0c;包括用户空间数据包处理和用户空间网络栈。主要内容概述&#xff1a; 数据包在Linux网络栈中的旅程&#xff1a;描述了数据包从发送到接收的完整路径&#xff0c;包括各…

深入浅出 Pytest:自动化测试的最佳实践 pytest教程 程序测试 单元化测试

一、用法 .1 断言 在测试函数中用assert&#xff08;断言&#xff09;来判断测试是否符合预期。 # 一个成功的测试函数def test_passing():assert (1, 2, 3) (1, 2, 3)# 一个失败的测试函数def test_failing():assert (1, 2, 3) (3, 2, 1)assert 语句本质上是用于检查一个表…

292-基于3U VPX 4核8线程I7 X86主板

一、产品概述 该产品是一款基于第六代Intel i7四核八线程处理器的高性能3U VPX刀片式计算机。产品提供了4个x4 PCIe 3.0总线接口&#xff0c;其中2个x4 PCIe 3.0接口可配置为1个x8 PCIe3.0接口&#xff0c;另外2个x4 PCIe 3.0接口可灵活配置成4个x2 PCIe 3.0或8个x1 PCIe 3.…

无线网络施工布线注意事项

路由器到交换机&#xff0c;交换机到交换机之间&#xff1a;普通450一箱的超五类线&#xff08;在用&#xff09;&#xff0c;建议长度70米以内&#xff08;特殊环境下可最高90米以内&#xff0c;需提前测试&#xff0c;未布线前现场接90米线测试。&#xff09;、六类线&#x…

【单片机】NPN+PNP组成的高边开关无法完全关断

项目场景&#xff1a; 采用NPNPNP组成高边开关&#xff0c;由单片机GPIO控制。 问题描述 原理图如下。发现CPS_ENABLE为低电平时&#xff0c;3.3V_C的电平不为0&#xff0c;约为0.9V。 原因分析与解决方案&#xff1a; 从原理上分析和独立电路测试没有问题&#xff0c;那么…

Unresolved plugin: ‘org.apache.maven.plugins:maven-site-plugin:3.12.1‘

问题 使用idea 社区办加载项目提示下面问题&#xff1a; Unresolved plugin: org.apache.maven.plugins:maven-site-plugin:3.12.1 问题解决 maven插件地址&#xff1a; https://maven.apache.org/plugins/maven-dependency-plugin/plugins.html Maven 中央仓库地址&#…

Effective C++读书笔记——item8(析构函数与异常)

析构函数引发异常的问题 异常同时存在的隐患&#xff1a;C 虽未禁止在析构函数中引发异常&#xff0c;但坚决阻止这样做。以std::vector等容器包含对象为例&#xff0c;当容器析构时要析构其中元素&#xff0c;若在析构元素&#xff08;如Widget类对象&#xff09;过程中连续抛…