Android组件通信与广播消息(3)—获取 Activity 的返回值

经过 startActivity(Intent) 方法启动 Activity,启动后的两个 Activity 之间相互独立,没有任何的关联。但一般状况下,须要后启动的 Activity 关闭时返回信息给先前启动的 Activity 。后启动的称为“子Activity”,先启动的称为“父Activity”。java

获取 子Activity 返回值步骤:

1.Sub-Activity 方式启动 子Activity 

以 Sub-Activity 方式启动子Activity,须要调用 startActivityForResult(Intent,requestCode) 函数ide

1)显式启动 子Activity

int SUBACTIVITY1 = 1;
Intent intent = new Intent(MainActivity.this,SubActivity1.class);
startActivityForResult(intent, SUBACTIVITY1);

2)隐式启动 子Activity

int SUBACTIVITY1 = 1;
Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse("https://my.oschina.net/zhangyujian/blog"));
startActivityForResult(intent,SUBACTIVITY1);
  • startActivityForResult(Intent,requestCode)参数说明:
  • 参数 Intent: 决定启动哪一个 Activity
  • 参数 requestCode:请求码,肯定是哪个 子Activity 返回的数据

2.设置 子Activity 的返回值

Uri data = Uri.parse("tel:"+tel_number);
Intent result = new Intent(null,data);
// putExtra 用于附加额外信息
result.putExtra("address","SWUST");
setResult(RESULT_OK,result);
finish();

 说明:子Activity 调用 finish() 函数关闭以前,调用 setResult() 函数设定须要返回给 父Activity 的数据函数

  • setResult(resultCode,result) 参数说明:
  • 参数 resultCode:是结果码,RESULT_OK(正常返回) / RESULT_CANCELED(取消返回)
  • 参数 result:是返回值,主要以 Uri 形式返回给 父Activity

3.在 父Activity 中获取返回值

private static int SUBACTIVITY1 = 1;
    private static int SUBACTIVITY2 = 2;
	@Override
		public void onActivityResult(int requestCode, int resultCode, Intent data){
		    super.onActivityResult(requestCode, resultCode, data);
			
            switch(requestCode){
			case SUBACTIVITY1:
				if(resultCode == RESULT_OK){
					Uri uriData = data.getData();
                   //响应操做,经过textView查看返回值
					textView.setText(uriData.toString());
				}else if(resultCode == RESULT_CANCELED)
                {}
				break;
			case SUBACTIVITY2:
                if(resultCode == RESULT_OK){
					Uri uriData = data.getData();
                   //响应操做,经过textView查看返回值
					textView.setText(uriData.toString());
				}else if(resultCode == RESULT_CANCELED)
                {}
				break;
			}
		
		}

说明:重载 onActivityResult() 函数实现this

  • onActivityResult(requestCode, resultCode, data) 参数说明:
  • 参数 requestCode:是请求码,判断是哪一个 子Activity 返回的
  • 参数 resultCode:代表 子Activity  数据返回状态
  • 参数 data :表示返回的 Uri 数据

 

经过简单的监听事件加关键代码便可验证功能。spa

相关文章
相关标签/搜索