在开发的过程中,经常会使用到值的回传,这个用语言表述可能会比较多余,直接上图片,让大家形象的看到,更方便与理解。
图 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的页面对我们的昵称进行修改即可。