Android中的Bundle

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());
发布了640 篇原创文章 · 获赞 143 · 访问量 54万+

猜你喜欢

转载自blog.csdn.net/u010356768/article/details/103032915