Activity之间交换数据

两个Activity之间有一个“信使”:Intent.因此我们主要将需要交换的数据放入Intent即可。

Intent提供了多个重载的方法来“携带”额外的数据。如下所示。

putExtras(Bundle data):向Intent中放入需要“携带”数据。

putSerializable():向Bundle中放入一个可序列化的对象。

为了取出Bundle数据携带包里的数据,Bundle提供了如下方法。

getSerializable(String key,Serializable data):从Bundle取出一个可序列化的对象

Activity_01

//创建一个Bundle对象
	Bundle data = new Bundle();		//1
	//将一个可序列化的对象以键值对的方式放入到Bundle中
	data.putSerializable("person", p);		//2
				
	//创建一个intent
	Intent intent = new Intent(BundleDemo.this,ResultActivity.class);		//3
				
    //向intent中放入“打包”好的数据
	intent.putExtras(data);			//4

	//启动inten对应的Activity
	startActivity(intent);		//5	

Activity_02

//获取启动该result的intent
		Intent intent = getIntent();					//1
		
		//获取该intent所携带的数据
		Bundle data = intent.getExtras();				//2
		
		//从Bundle数据包中取出数据
		Person p = (Person) data.getSerializable("person");			//3
		
		uname.setText("您的用户名为:" + p.getUsername());			//4
		pword.setText("您的密码为:" + p.getPassword());
		gender.setText("您的性别为:" + p.getGender());

Activity_01想和Activity_02交换数据。就需要经过以上步骤。

为了便于理解。把它比作一个发货人和一个收货人。

发货人:

1、Bundle data = new Bundle();    创建一个Bundle对象。可以看做发货人准备了一个捆绑的绳子。

2、data.putSerializable("person", p);  将一个可序列化的对象以键值对的形式放入到Bundle中。可以理解为,用绳子将货物捆绑好。

3、Intent intent = new Intent(BundleDemo.this,ResultActivity.class); 创建一个“信使”:Intent。

第一个参数:packageContext A Context of the application package implementing this class.

第二个参数:cls The component class that is to be used for the intent.

我的理解为:发件人信息,收件人地址(具体需要交换数据的Activity)

4、intent.putExtras(data);  向intent中放入“捆绑”好的数据。将已经捆绑好了的数据交给快递员。

5、startActivity(intent);   启动inten对应的Activity。快递员开始送货。

收货人:

1、Intent intent = getIntent();   获取启动该Activity_02的intent。快递员到达地点。

2、Bundle data = intent.getExtras(); 获取该intent所携带的数据;从快递员哪里接受了货物。

3、Person p = (Person) data.getSerializable("person");   从Bundle数据包中取出数据。将捆绑好的货物解开。

4、uname.setText("您的用户名为:" + p.getUsername()); 获得具体的数据。

以上就是我个人理解,若有不对的地方,欢迎大家指正。共同促进。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值