startActivityForResult的用法

相信大家对startActivityForResult的用法已经烂熟于心了,不过笔者在未入门阶段还是不怎么了解这个机制。所以在做数据更新的时候,往往会多次请求不必要的数据,或者会缓存不必要的数据。android中已经存在页面跳转回调结果的机制了,何乐而不为呢。

一、正常地发起请求

1、定义你的请求码

private final static int ADDADDRESS = 0;//定义你的请求码

2、发起请求

 tvAdd.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent it = new Intent(AddressBookAct.this, UpdateAddressAct.class);
                it.putExtra("type", "0");
                startActivityForResult(it, ADDADDRESS);
            }
        });

3、在本activity中复写onActivityResult方法

 /**
     * @param requestCode 请求码
     * @param resultCode  结果码
     * @param data        回传过来的Intent(携带数据)
     */
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        //结果码为RESULT_OK
        if (resultCode == RESULT_OK) {
           //筛选请求码是哪个,做对应的操作
            switch (requestCode) {
                case ADDADDRESS:
                //轻松获取数据,得data者得天下
                String test1 = data.getStringExtra("test1");
                    String test2 = data.getStringExtra("test2");
                    doyourThings();//做你想做的事情
                    break;
                case UPDATEADDRESS:
                    doyourThings();//做你想做的事情
                    break;
            }
        }
    }

4、新页Activity在关闭前只需要填充好数据并设置结果码就可以了

    //返回
        ivBack.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent mIntent = new Intent();
                mIntent.putExtra("test1", "1000");
                mIntent.putExtra("test2", "2000");
                // 设置结果码为RESULT_OK,并传递带数据的Intent
                setResult(RESULT_OK, mIntent);
                finish();//此处一定要调用finish()方法
            }
        });

总结:比较基础,但是很有用~也很好用,可以说一分钟就能理解startActivityForResult的用法

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值