startActivityForResult()的用法

Android 中,可以使用 Intent 跳转至新的 Activity 页面,并可以通过 putExtra 携带下个页面需要的参数。

A中的代码:
Intent intent  new  Intent(xxx. this yyy. class );
intent.putExtra(  "name" "leirenbaobao" );
startActivity(intent);

B中的代码:
String name = getIntent().getStringExtra(  "name" )

现有如下需求:

在A页面中携带参数跳转至B页面,再B页面确定某个参数后,再返回给A页面。



Android中,这时就使用 startActivityForResult()A发起跳转,在 B中通过 setResult()返回并 finish()掉当前 B页面,再回到 A方法中重写 onActivityResult()完成操作。

其中,因为一个页面中可能要发起不同的请求,再另一个页面中,也会有不同的结果返回,所以采用 resultCoderequestCode结合的方式控制进入准确的方法中。

举例如下,A页面是火车票查找页面,需要跳转至B页面,选择出发城市,再将结果返回给A页面使用。

A中的 startActivityForResult()代码:
findViewById(R.id. my_button).setOnClickListener( new OnClickListener() {
                
    @Override
    public void onClick(View v) {
        Intent intent = new Intent(MainActivity.this , BActicity.class );
        //1000是requestCode,偷懒不写成静态变量名了。
        startActivityForResult(intent, 1000);
    }
});

B中的 setResult() 代码:

Intent intent = new Intent(BActicity. this,  MainActivity. class);
intent.putExtra( "name", editText.getText().toString().trim());
//这里是resultCode
setResult(2000, intent);
//finish()当前页面
finish();

再回到A中的 onActivityResult() 处理,代码如下:  

@Override
protected void onActivityResult( int requestCode, int resultCode, Intent data) {
      // TODO Auto-generated method stub
      //同时验证request和resultCode
      if(requestCode==1000&&resultCode==2000){
           String name = data.getStringExtra( "name");
            tv.setText(name);
     }
      super.onActivityResult(requestCode, resultCode, data);
}  

ctrlz  presents!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值