Android学习————使用Bundle 在Activity之间交换数据

本文详细介绍了在Android应用中如何使用Intent与Bundle进行数据传递,包括如何在新的Activity中获取Intent,并从中提取Bundle来获取传递的数据。

视频资源

在这里插入图片描述

/***在新的activity中 获取 Intent**/
Intent intent = getIntent();// 获取Intent
Bundle bundle = intent.getExtras();// 获取Bundle
### 使用ViewModel在Activity之间传递数据 为了实现`Activity`之间数据共享,可以通过创建一个继承自`ViewModel`的类来保存和管理UI相关的数据。此方法允许不同组件(如多个`Activity`或它们所含有的`Fragment`)访问相同的`ViewModel`实例。 #### 创建并配置ViewModel 定义一个名为`SharedViewModel`的类用于存储要跨活动共享的信息: ```kotlin import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel class SharedViewModel : ViewModel() { private val _sharedMessage = MutableLiveData<String>() val sharedMessage: LiveData<String> get() = _sharedMessage fun setSharedMessage(message: String) { _sharedMessage.value = message } } ``` 上述代码展示了如何封装一条消息字符串作为可观察的数据源[^1]。 #### 在第一个Activity中设置ViewModel 当从第一个`Activity`准备向第二个发送信息时,初始化这个公共视图模型,并调用相应的方法更新其内部状态: ```kotlin // Inside FirstActivity.kt val model: SharedViewModel by viewModels() button.setOnClickListener { model.setSharedMessage("Hello from Activity One!") startActivity(Intent(this, SecondActivity::class.java)) } ``` 这里利用Kotlin合成器简化了获取`ViewModel`的过程;点击按钮后不仅设置了待传输的消息还启动了新的界面。 #### 接收端——第二Activity读取ViewModel中的数据 新打开的目标页面同样需要关联到同一个`ViewModel`对象上来提取之前设定好的值: ```kotlin // Within SecondActivity.kt val model: SharedViewModel by viewModels() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // Observe the live data and update UI accordingly. model.sharedMessage.observe(this@SecondActivity, Observer { message -> textView.text = message }) } ``` 通过这种方式,在两个独立运行的应用程序单元间实现了高效而简洁的数据交换机制[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值