android中Activity传递参数之onActivityResult

我们的一个Activity要调用一个新的Activity,然后用户对新的Activity操作完成后,关闭新的Activity,这时需要将新的Activity中的一些值传递给旧的Activity。这种情况不用自己处理,Android已经为我们编写了一个onActivityResult(int requestCode, int resultCode, Intent data)方法,专门处理这种情况。
首先,在旧的Acitvity中的启动Intent方法不能再使用之前的startActivity,而要给用startActivityForResult(i, REQUESTCODE1 );方法,该方法第一个参数为要传递的intent,第二个参数为请求码,该请求码其实就是一个整型变量,用于指明是那个方法、或者说是那个控件启动了该intent,其最主要的目的是在onActivityResult(int requestCode, int resultCode, Intent data)方法中,编程使用。读者这里可以不用深究,看到例子后,便会明白。该处代码如下:
                                    
Intent i = new Intent(TestActivity.this,SecondActivity.class);       
i.putExtra("uName", "legend");  
     i.putExtra("uAge", (short)18);  
     startActivityForResult(i, REQUESTCODE1 );  
 
其次,在新的Activity中要接受刚刚传递的Intent,接受方法如上所述,这里不再赘述。在新的Acitvity处理完成后,需要同过setResult(Intent i)方法来设置新的Activity结束后需要传递会旧的Activity的Intent。之后调用新的Activity的finish()方法,结束新的Acitvity就可以了。代码如下:
 
 
Intent resultIntent = new Intent();  
resultIntent.putExtra("uName", "legend2");  
resultIntent.putExtra("uAge", (short)22);  
setResult(RESULTCODE1, resultIntent);  
SecondActivity.this.finish();  
 
 
最后,在旧的Activity中重写onActivityResult(int requestCode, int resultCode, Intent data)方法,该方法的三个参数,这里就不在赘述了,相信读者一看即明白,这里给出代码如下:
if(requestCode == REQUESTCODE1){  
         System.out.println("REQUESTCODE equal");  
         if(resultCode == SecondActivity.RESULTCODE1){  
                  System.out.println("RESULTCODE equal");  
                  String uName = data.getStringExtra("uName");  
                  short uAge = data.getShortExtra("uAge", (short)0);  
                  tv.setText("uName:"+uName+" uAge:"+uAge);  
         }  
}  
 
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值