android学习笔记18 - activity反馈:startActivityForResult、setResut和onActivityResult

Activity反馈:Activity关闭后,反馈信息给之前打开这个Activity的Activity。

以A打开B,B关闭后反馈给A为例进行说明。需要用到以下方法:

startActivityForResult(Intent intent, Int requestCode)  

A需要通过这个方法打开B,其中intent为当前intent,请求码requestCode用于标志请求来源。比如requestCode用于匹配一个A打开复数B的标志,比如A打开B1设定requestCode为1,打开B2设定requestCode为2。操作如下:

public void onClick(View v)
	{
		if(v.getId()==R.id.b1)
		{
			Intent intent = new Intent("CCBCScript");        
			Bundle bundle = new Bundle();
			bundle.putString("CallStr", "LaunchApp");
			intent.putExtras(bundle);
			startActivityForResult(intent,1);
			return;
		}
		if(v.getId()==R.id.b2)
		{
			String count=e1.getText().toString();
			Intent intent = new Intent("CCBCScript");        
			Bundle bundle = new Bundle();
			bundle.putString("count", count);
			bundle.putString("CallStr", "消费");
			intent.putExtras(bundle);
			startActivityForResult(intent,2);
			return;
		}
}

setResut(int resultCode, Intent intent)

当B关闭后,要将数据进行反馈,需要调用setResult。调用setResult的时机是调用finish之前。结束码resultCode用于标志结束信息的来源。操作如下:

public void finish(int resultCode, String ReturnStr)
	{
		Bundle bundle=new Bundle();
		if(ReturnStr!=null&&ReturnStr.length()>0)
		{
			bundle.putString("ReturnStr",ReturnStr);
		}
		Intent intent=new Intent();
		intent.putExtras(bundle);
		setResult(resultCode, intent);
		finish();
	}

onActivityResult(int requestCode, int resultCode, Intent intent)

A通过这个方法处理之前打开的一系列B1、B2、B3......intent可以用于处理intent打包信息,resultCode用于标志不同的B,这个B可以是相同的activity,也可以是不同的activity。requestcode标志同一个A不同位置调用的B,可以用来区分不同地方的调用。

protected voidonActivityResult(int requestCode, int resultCode, Intent data) { 
               switch(requestCode){  
                  case 1:  
                      //来自按钮1的请求,作相应业务处理  
                        switch(resultCode){  
                        case 1:  
                            // B1的返回数据  
                        case 2:  
                           // B2的返回数据  
                         }  
                  case 2:  
                   //来自按钮2的请求,作相应业务处理  
                         switch(resultCode){  
                         case 1:  
                               // B1的返回数据  
                         case 2:  
                               // B2的返回数据  
                         }  
               }   
          }  
}  


 



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值