1、什么是Bundle?
Bundle是键值对。
2、交换数据流程
?3、传递数据的实例
Button btn = (Button) findViewById(R.id.btn); //获取保存按钮
btn.setOnClickListener(new View.OnClickListener() { //为按钮添加单击监听事件
@Override
public void onClick(View v) {
//获取输入的所在地区
String site1 = ((EditText) findViewById(R.id.et_site1)).getText().toString();
//获取输入的所在街道
String site2 = ((EditText) findViewById(R.id.et_site2)).getText().toString();
//获取输入的详细地址
String site3 = ((EditText) findViewById(R.id.et_site3)).getText().toString();
//获取输入的用户信息
String name = ((EditText) findViewById(R.id.et_name)).getText().toString();
//获取输入的手机号码
String phone = ((EditText) findViewById(R.id.et_phone)).getText().toString();
//获取输入的邮箱
String email= ((EditText) findViewById(R.id.et_email)).getText().toString();
if (!"".equals(site1) && !"".equals(site2) && !"".equals(site3)&&
!"".equals(name) && !"".equals(phone) &&!"".equals(email) ) {
//将输入的信息保存到Bundle中,通过Intent传递到另一个Activity当中并显示出来
Intent intent = new Intent(MainActivity.this, AddressActivity.class);
//创建并实例化一个Bundle对象
Bundle bundle = new Bundle();
bundle.putCharSequence("name", name);//保存姓名
bundle.putCharSequence("phone", phone);//保存手机号码
bundle.putCharSequence("site1", site1);//保存所在地区信息
bundle.putCharSequence("site2", site2);//保存所在街道信息
bundle.putCharSequence("site3", site3);//保存详细地址信息
intent.putExtras(bundle);//将Bundle对象添加到Intent对象中
startActivity(intent);//启动Activity
}else {
Toast.makeText(MainActivity.this,"请将收货地址填写完整!",Toast.LENGTH_SHORT).show();
}
}
});
4、获取数据的实例
Intent intent = getIntent();//获取Intent对象
Bundle bundle = intent.getExtras();//获取传递的Bundle信息
TextView name = (TextView) findViewById(R.id.name);//获取显示姓名的TextView组件
name.setText(bundle.getString("name"));//获取输入的姓名并显示到TextView组件中
TextView phone = (TextView) findViewById(R.id.phone);//获取显示手机号码的TextView组件
phone.setText(bundle.getString("phone"));//获取输入的电话号码并显示到TextView组件中
TextView site = (TextView) findViewById(R.id.site);//获取显示地址的TextView组件
//获取输入的地址并显示到TextView组件中
site.setText(bundle.getString("site1") + bundle.getString("site2") + bundle.get("site3"));
5、调用另一个activity并返回结果
? ?5.1、主activity使用startActivityForResult(第二个参数是自定义命令码)调用子activity
//创建Intent对象
Intent intent=new Intent(MainActivity.this,HeadActivity.class);
startActivityForResult(intent, 0x11);//启动intent对应的Activity
? 5.2、子activity返回数据
Intent intent = getIntent(); //获取Intent对象
Bundle bundle = new Bundle(); //实例化要传递的数据包
bundle.putInt("imageId", imageId[position]);// 显示选中的图片
intent.putExtras(bundle); //将数据包保存到intent中
setResult(0x11, intent); //设置返回的结果码,并返回调用该Activity的Activity
finish(); //关闭当前Activity
? 5.3主activity重写onActivityResult函数获取返回值
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode==0x11 && resultCode==0x11){ //判断是否为待处理的结果
Bundle bundle=data.getExtras(); //获取传递的数据包
int imageId=bundle.getInt("imageId"); //获取选择的头像ID
ImageView iv=(ImageView)findViewById(R.id.imageView); //获取布局文件中添加的ImageView组件
iv.setImageResource(imageId); //显示选择的头像
}
}
|