安卓 Intent (1)数据传递 Intent和Bundle详解

本文探讨了Intent在安卓四大组件中的作用,主要关注数据传递。讲解了Bundle的意义,指出无论是否使用Bundle,Intent的数据传递效果相同。同时讨论了Intent传递对象的方式,无论是直接传递还是通过Bundle,都能实现对象的传递。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Intent是四大组件的纽带,传递数据的作用
1.Bundle的意义?
2.Intent传递对象?

首先看Intent的传递关系:

理论部分:
1.数据依靠于Intent传递数据
2.Intent依靠于Bundle当做数据包

Intent提供四种方法:
putExtras(Bundle data)                      //直接存入 数据包
getExtras();                                //直接取出 数据包;

putExtra(String key,Xxx value)              //以键值方式 存入数据
getXxxExtra(String name,Xxx defaultValue)   //以指定key 取出数据
Bundle提供四种方法:
putXxx(String key, Xxx value)                   //以键值方式 存入数据
getXxx(String key, Xxx defalutValue )           //以指定key  取出数据

putSerializable(String key,Xxx defalutValue);    //以键值方式存   可序列化的对象
getSerializable(String key)                      //以指定key取出 可序列号的对象

1.Bundle的意义是什么?

传递数据用Bundle和不用的区别:

//不用Bundle
        intent.putExtra("id",str); 
//用Bundle传递数据
        Bundle bundle=new Bundle();
        bundle.putString("id", str);
        intent.putExtras(bundle);

这传递语法本身意义上是相同的:
那么可以理解为安卓为Intent提供了一种叫做Bundle封装机制,
写于不写它都是存在的,

所以:用不用Bundle传递效果都一样的

接收数据用不用Bundle的区别

//不用Bundle
        Intent intent=getIntent();
        String aa=intent.getStringExtra("id");
//用Bundle接收数据
        Intent intent=getIntent();
        Bundle bundle=intent.getExtras();
        String aa=bundle.getString("id");

这个代码中: 用Bundle 或者 不用Bundle都能接收到数据

所以: 用不用Bundle接受效果都一样的


总结:
Bundlle写不写都不是很重要了,那么Bundle代表的是封装的数据,
上面有两种传递,两种接收,完全可以混写的使用也毫无关系了!
主要:方便二次传递的时候我们可以直接传递Bundle即可


2.Intent 传递对象!
Intent可以传递值 可以传递对象,
比如传递一个封装的GetSet

  intent.putExtra("id", new Beran("你好"));

或者用Bundle传递

        Bundle bundle2=new Bundle();
        bundle2.putSerializable("id",new Beran("你好"));
        intent.putExtras(bundle2);

效果都是一样的,

直接取对象的写法

            Intent intent2=getIntent();
            Beran beran=(Beran) intent2.getSerializableExtra("id");

取Bundle再取对象也是一样的

            Intent intent2=getIntent();
            Bundle bundle=intent2.getExtras();
            Beran beran=(Beran) bundle.getSerializable("id");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值