android通信组件机制–intent的初步认识之获取activity返回值and_第1页
android通信组件机制–intent的初步认识之获取activity返回值and_第2页
android通信组件机制–intent的初步认识之获取activity返回值and_第3页
android通信组件机制–intent的初步认识之获取activity返回值and_第4页
android通信组件机制–intent的初步认识之获取activity返回值and_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Android通信组件机制-Intent的初步认识之获取Activity返回值And.在之前的例子中,通过使用 startActivity(Intent) 方法启 动了 Activity ,启动之后的两个 Activity 相互独立没有任何的 关联。但是在很多时候,启动后一个 Activity 是为了让用户 有进一步的操作或者有某些特别的选择,那么在关闭这个 Activity 后,用户的选择信息要返回给原来的那个 Activity , 即后启动的子 Activity 的部分信息要返回给父 Activity 。这个 操作可以分为以下三个步骤:启动子 Activity设置子 Activity 的返

2、回值 在父 Activity 中获取返回值第一步:启动子 Activity 的方法在这里不是用 startActivity(Intent) ,而是需要调用 startActivityForResult(Intent,requestCode) 函数,其中参数 Intent 用来决定启动哪个 Activity ,参数 requestCode 是唯一 标识子 Activity 的请求码。因为一个父 Activity 可能有多个子 Activity ,而当子 Activity 返回时,父 Activity 都要调用相同 的处理函数,而这时我们就要用一个标识来告诉父 Activity 返回的是哪个子 A

3、ctivity 进而完成相对应的动作。例如: code lang=javaint SUBACTIVITY1=1;Intent intent=newIntent(ActivityIntent.this,SubActivity1.class);startActivityForResult(intent,SUBACTIVITY1);/code第二步:在子 Activity 中调用 setResult() 函数就能将所需的 数据返回给父 Activity 。这个函数有两个参数, 一个是结果码, 一个是返回值, 下例中 RESULT_OK 就是结果码用来表示子 Activity 的返回状态 (结果码都为

4、整数类型 ) ;另一个参数 result 是返回值,数据主要以 Uri 形式提供返回给父 Activity , 这个例子中我们把从 EditText 的控件中得到的值通过 Intent 返回给父 Activity 。code lang=javaString uriString = editText.getText().toString();Uri data = Uri.parse(uriString);Intent result=new Intent(null,data);setResult(RESULT_OK,result);finish();/code第三步:当关闭子 Activity 时

5、,就会启动他的父 Activity 的 startActivityResult() 。代码中首先对结果码进行判断,如果 返回值是 RESULT_OK 则通过 getData() 函数获取 Intent 中 的 Uri 数据,否则不进行操作。code lang=javaprivate static final int SUBACTIVITY1=1;private static final int SUBACTIVITY2=2;protected void onActivityResult(int requestCode, int resultCode, Intent data) / TODO A

6、uto-generated method stub super.onActivityResult(requestCode, resultCode, data);/其中第一个参数表示是哪一个子Activity 的返回值, 第二个参数用来表示子 Activity 的返回状态,第三个参数是返回数 据,返回数据类型为 Intentswitch(requestCode)case SUBACTIVITY1:if(resultCode = RESULT_OK)Uri uriData=data.getData();textView.setText(uriData.toString();break;case S

7、UBACTIVITY2: break;/code例子中父 Activity 如下:子 SubActivity1 如下:这个例子中 在子 SubActivity 中提供了一个输入框以及“接受”和“取消”两 个按钮,如果在输入框中输入信息后单击“接受”按钮,程序 会把输入框中的信息传递给其父 Activity ,而如果单击“取消” 按钮,则程序不会向其父 Activity 传递任何信息。 实现方法如下: (分别为两个按钮创建点击事件,点击“接受” 按钮时将 EditText 控件的内容作为数据保存在 Uri 中,并用 这个 Uri 构造 Intent ,将 Intent 作为返回值, RESULT

8、_OK 作为结果码, 通过调用 setResult() 函数将返回值和结果码传 递给父 Activity ,最后用 finish() 函数关闭当前的子 Activity ; 点击“取消”按钮时,RESULT_CANCEL 作为结果码,而null 作为返回值,说明程序不会向父 Activity 传递任何信息 ) code lang=java class ButtonListener implements OnClickListenerOverride public void onClick(View v) / TODO Auto-generated method stubfinal EditText editText = (EditText)findViewById(R.id.edit);String str = editText.getText().toString();Uri data = Uri.parse(str);Intent result=new Intent(null,data);setResult(RESULT_OK,result);finish();class ButtonListener2 impleme

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论