您的位置:首页 > 其它

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

2015-12-16 17:55 435 查看
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");
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: