Bundle介绍
Bundle主要用于传递数据;它保存的数据,是以key-value(键值对)的形式存在的
传递基本数据类型
Bundle经常使用在Activity之间或者线程间传递数据,传递的数据可以是boolean、byte、int、long、float、double、string等基本类型或它们对应的数组,也可以是对象或对象数组
当Bundle传递的是对象或对象数组时,必须实现Serializable或Parcelable接口
Bundle提供了各种常用类型的putXxx()/getXxx()方法,用于读写基本类型的数据(各种方法可以查看官方API)
【达内课程】Intent在Android系统的作用这个栗子中用intent进行了传值
其他代码不变,我们改为bundle传值
Intent intent = new Intent(this,SecondActivity.class);
Bundle bundle = new Bundle();
bundle.putString("_username",username);
bundle.putString("_gender",gender);
bundle.putInt("_age",age);
intent.putExtras(bundle);
startActivity(intent);
取值时
Bundle bundle = getIntent().getExtras();
String u = bundle.getString("_username");
String g = bundle.getString("_gender");
int a = bundle.getInt("_age");
Log.d("Intent","姓名:"+u+" 性别:"+g+" 年龄:"+a);
传递Serializable类型的对象
根据Parcelable和Serializable中Serializable的栗子改写。同样是Music类实现Serializable接口
传递数据时
Intent intent = new Intent(this,SecondActivity.class);
Bundle bundle = new Bundle();
bundle.putSerializable("music",music);
intent.putExtras(bundle);
startActivity(intent);
接收数据时
Bundle bundle = getIntent().getExtras();
Music music = (Music) bundle.getSerializable("music");
传递Parcelable类型的对象
根据Parcelable和Serializable中Serializable的栗子改写。同样是Person类,实现Parcelable接口
传递数据时
Person person = new Person(username,gender,age);
Intent intent = new Intent(this,SecondActivity.class);
Bundle bundle = new Bundle();
bundle.putParcelable("person",person);
intent.putExtras(bundle);
startActivity(intent);
接收数据时
Bundle bundle = getIntent().getExtras();
Person person = bundle.getParcelable("person");
Log.d("Intent","姓名:"+person.getUsername()+" 性别:"+person.getGender()+" 年龄:"+person.getAge());