news 2026/5/20 19:44:00

Android里ViewModel的两种基本用法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Android里ViewModel的两种基本用法

1. 在compose里

@Composable fun CounterScreen( vm: CounterViewModel = viewModel() // 保持实例 ) { val count by vm.count.collectAsState() Button(onClick = { vm.increment() }) { Text("Count: $count") // 正常计数 } }

这需要在app的 build_gradle.kts里添加依赖:

dependencies { // other dependencies implementation(libs.androidx.lifecycle.viewmodel.compose) //... }

如果需要传参:

// 1. 使用 ViewModelFactory class CounterViewModelFactory(private val counterId: String) : ViewModelProvider.Factory { override fun <T : ViewModel> create(modelClass: Class<T>): T { return CounterViewModel(counterId) as T } } // 2. 在 Composable 中使用 @Composable fun CounterScreen(counterId: String) { val vm: CounterViewModel = viewModel( factory = CounterViewModelFactory(counterId) ) // 使用 viewModel... }

2. 在 activity里:

import androidx.activity.viewModels class MainActivity : ComponentActivity() { // 这在 Activity/Fragment 类中有效 private val vm: CounterViewModel by viewModels()

也可以写成:

val vm: CounterViewModel = ViewModelProvider(this)[CounterViewModel::class.java]
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/16 8:45:49

计算机毕设java数字集成电路设计课程线上仿真实验平台的设计与实现 基于Java的数字集成电路设计在线仿真实验平台开发与应用 Java环境下数字集成电路设计课程仿真实验平台的构建与实现

计算机毕设java数字集成电路设计课程线上仿真实验平台的设计与实现7k32q9&#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。随着信息技术的飞速发展&#xff0c;传统的教育模式正逐…

作者头像 李华
网站建设 2026/5/20 16:40:53

HeyGem系统博物馆应用:文物背后的故事由AI讲述

HeyGem系统博物馆应用&#xff1a;文物背后的故事由AI讲述 在一座安静的展厅里&#xff0c;一件青铜器静静陈列着。它来自三千年前的商代&#xff0c;铭文斑驳&#xff0c;纹路深邃。过去&#xff0c;观众只能依靠展牌上的几行文字去想象它的过往&#xff1b;如今&#xff0c;一…

作者头像 李华
网站建设 2026/5/7 14:18:09

HeyGem系统可用于制作AI客服应答演示视频

HeyGem系统可用于制作AI客服应答演示视频 在金融、电信或政务类企业中&#xff0c;客户拨打热线时听到的“您好&#xff0c;欢迎致电XX公司”早已不再是真人录音那么简单。越来越多的企业开始部署具备视觉形象的AI客服——数字人&#xff0c;来提供更具亲和力的服务体验。而如何…

作者头像 李华
网站建设 2026/5/20 12:59:40

Python算法从入门到实战:打造高效简洁的程序逻辑

算法是程序的“灵魂”&#xff0c;它决定了程序的执行效率、资源消耗甚至功能边界。而Python以其简洁易懂的语法、丰富的内置库和强大的生态&#xff0c;成为了算法实现、验证和落地的首选语言之一——无论是日常开发中的数据处理、还是面试中的算法题、亦或是实际项目中的性能…

作者头像 李华