Android值的回传即startActivityForResult的使用

在开发的过程中,经常会使用到值的回传,这个用语言表述可能会比较多余,直接上图片,让大家形象的看到,更方便与理解。


图  1


图  2


解释一下:

点击图2中的昵称,可以跳转到图1,然后在图1设置我们的昵称,点击右上角的对号,数据返回到图2界面,并且显示。

这就是很明显的一个值的回传。

一般的传值都是从A传到B,而我们的回传则是,A跳转B,然后B赋值,在回传给A,A来显示。这样理解是不是就很简单啦。

那么就开始代码方面的叙述吧:

A.activity的代码:

case R.id.rela2:
    startActivityForResult(new Intent(this, NicknameAcitivity.class), 0xb9);
    break;
这里是点击我们的昵称这一行,可以跳转到填写昵称的界面。要使用startActivityForResult。

两个参数,分别代表,第一个是intent,第二个则是我们的标识。也就是requestCode。

在我们的这个界面,还要有onActivityResult():

protected void onActivityResult(int requestCode, int resultCode,
                                    Intent intent) {
        switch (requestCode) {

            //昵称设置
            case 0xb9:
                if (resultCode == 1000) {
                    String nickname = intent.getExtras().getString("nickName");
                    text_nickName.setText(nickname);
                }
                break;
        }

        super.onActivityResult(requestCode, resultCode, intent);
    }

这段代码跟我们的startActivityForResult在一个activity中,onActivityResult是用来接受B的回传的值的处理。

int类型的0xb9,则是我们的requestCode标识,resultCode则是返回来的标识。requestCode我们已经自己定义。现在就需要我们得到返回的resultCode。

如下:

B.activity:

Intent intent = new Intent();
intent.putExtra("nickName", nickname_edit.getText().toString());
NicknameAcitivity.this.setResult(1000, intent);
finish();

在B.activity中,就是对我们值的回传,首先获取我们edittext的内容,然后通过putExtra携带,利用setResult将intent回传。而我们这里定义的1000就是我们前面需要的resultCode。

那么,我们在A中就requestCode==0xb9,resultCode==1000.通过这些,足以获取到我们的nickname,然后在A.activity的页面对我们的昵称进行修改即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值