1.`传值方式
/**
* 意图的启动方式,有两种方式,1.显示意图 2.隐式意图
* @param v
*/
@Override
public void onClick(View v) {
switch (v.getId()) {
//显示启动意图
case R.id.start_a:
Intent intent = new Intent();
intent.setClass(this,AAA.class);
//1.传值给A活动,以键值对的方式传递
// intent.putExtra("name","张三");
// intent.putExtra("age",100);
//2.通过对象去传递
Bundle bundle = new Bundle();
bundle.putString("name","战三");
bundle.putInt("age",100);
intent.putExtras(bundle);
startActivity(intent);
break;
//隐式启动意图,当出现多个逻辑名相同的时候,会弹框提示选择
case R.id.start_b:
Intent b = new Intent();
b.setAction("bbb");
startActivity(b);
break;
//启动意图,并且要求有一个返回值
case R.id.start_d:
Intent d = new Intent();
d.setClass(this,DDD.class);
d.putExtra("num1",10);
d.putExtra("num2",20);
startActivityForResult(d,0x001);
break;
default:
break;
}
}
/**
* 当有返回的值时候,会调用该方法
* @param requestCode 发送出去的请求识别码
* @param resultCode 返回的值的识别码
* @param data 返回的值
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode==0x001 && resultCode==0x002){
int cout = data.getIntExtra("result",-1);
show.setText(cout+"");
}
}
2.接收方式
public void fanhui(View v){
//接受传递过来的值
Intent intent = getIntent();
int num1 = intent.getIntExtra("num1",-1);
int num2 = intent.getIntExtra("num2",-1);
int count = num1+num2;
intent.putExtra("result",count);
//设置结果集,把结果传递回去,0x002作为识别码
setResult(0x002,intent);
finish();
}