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");