Activity之间的通讯

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();

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值