使用startActivity方式启动的Activity和它的父Activity无关,当它关闭时也不会提供任何反馈。
 
可变通的,你可以启动一个Activity作为子Activity,它与父Activity有内在的联系。当子Activity关闭时,它会触发父Activity中的一个事件处理函数。子Activity最适合用在一个Activity为其它的Activity提供数据(例如用户从一个列表中选择一个项目)的场合。
 
子Activity的创建和普通Activity的创建相同,也必须在应用程序的manifest中注册。任何在manifest中注册的Activity都可以用作子Activity。
 
启动子Activity
 
startActivityForResult方法和startActivity方法工作很相似,但有一个很重要的差异。Intent都是用来决定启动哪个Activity,你还可以传入一个请求码。这个值将在后面用来作为有返回值Activity的唯一ID。
 
下面的代码显示了如何启动一个子Activity:
 
private static final int SHOW_SUBACTIVITY = 1;
Intent intent = new Intent(this, MyOtherActivity.class);
startActivityForResult(intent, SHOW_SUBACTIVITY);
 
和正常的Activity一样,子Activity可以隐式或显式启动。下面的框架代码使用一个隐式的Intent来启动一个新的子Activity来挑选一个联系人:
 
private static final int PICK_CONTACT_SUBACTIVITY = 2;
Uri uri = Uri.parse(“content://contacts/people”);
Intent intent = new Intent(Intent.ACTION_PICK, uri);
startActivityForResult(intent, PICK_CONTACT_SUBACTIVITY);
 
返回值
 
当子Activity准备关闭时,在finish之前调用setResult来给调用的Activity返回一个结果。
 
setResult方法带两个参数:结果码和表示为Intent的负载值。结果码是运行子Activity的结果,一般是Activity.RESULT_OK或Activity.RESULT_CANCELED。在一些情况下,你会希望使用自己的响应代号来处理特定的应用程序的选择;setResult支持任何整数值。
 
作为结果返回的Intent可以包含指向一个内容(例如联系人,电话号码或媒体文件)的URI和一组用来返回额外信息的Extra。
 
接下来的代码片段节选自子Activity的onCreate方法,显示了怎样向调用的Activity返回不同的结果:
 
Button okButton = (Button) findViewById(R.id.ok_button);
 
okButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View view)
{
Uri data = Uri.parse(“content://horses/” + selected_horse_id);
Intent result = new Intent(null, data);
result.putExtra(IS_INPUT_CORRECT, inputCorrect);
result.putExtra(SELECTED_PISTOL, selectedPistol);
setResult(RESULT_OK, result);
finish();
}
});
 
Button cancelButton = (Button) findViewById(R.id.cancel_button);
 
cancelButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View view)
{
setResult(RESULT_CANCELED, null);
finish();
}
});
 
处理子Activity的结果
 
当子Activity关闭时,它的父Activity的onActivityResult事件处理函数被触发。
 
重写这个方法来处理从子Activity返回的结果。onActivityResult处理器接受好几个参数:
 
? 请求码
曾经用来启动子Activity的请求码。
 
? 结果码
结果码是由子Activity设置的,用来显示它的结果。它可以是任何整数值,但典型的值是Activity.RESULT_OK和Activity.RESULT_CANCELLED。
 
如果子Activity非正常关闭或在关闭时没有指定结果码,结果码都是Activity.RESULT_CANCELED。
 
? 数据
一个Intent来打包任何返回的数据。依赖于子Activity的目的,它可能会包含一个代表特殊的从列表中选择的数据的URI。可变通的,或额外的,子Activity可以使用“extras”机制以基础值的方式返回临时信息。
 
下面的框架代码实现了一个Activity中的onActivityResult事件处理函数:
 
private static final int SHOW_SUB_ACTIVITY_ONE = 1;
private static final int SHOW_SUB_ACTIVITY_TWO = 2;
 
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch(requestCode)
{
case (SHOW_SUB_ACTIVITY_ONE) :
{
if (resultCode == Activity.RESULT_OK)
{
Uri horse = data.getData();
boolean inputCorrect = data.getBooleanExtra(IS_INPUT_CORRECT, false);
String selectedPistol = data.getStringExtra(SELECTED_PISTOL);
}
break;
}
case (SHOW_SUB_ACTIVITY_TWO) :
{
if (resultCode == Activity.RESULT_OK)
{
// TODO: Handle OK click.
}
break;
}
}
}

//原文地址:http://www.cnblogs.com/top5/archive/2012/04/09/2439598.html

转载于:https://www.cnblogs.com/yiki/archive/2012/04/10/2440188.html

Activity返回值[转]相关推荐

  1. Activity返回值

    使用startActivity方式启动的Activity和它的父Activity无关,当它关闭时也不会提供任何反馈. 可变通的,你可以启动一个Activity作为子Activity,它与父Activi ...

  2. Activity的跳转及返回值,activity的生命周期

    Activity生命周期 从创建到销毁的生命周期: onCreate()→onStart()→onResume()→onPouse()→onStop()→onDestroy() 从起动到后台再到前台: ...

  3. WF4B1 的有返回值的Activity,Bookmark,有返回值Bookmark

    WF4B1 的有返回值的Activity,Bookmark,有返回值Bookmark 目录 1    NativeActivity<T>    1 1.1    定义有返回值的Activi ...

  4. Android有返回值的Activity

    在原Activity中,使用this.startActivityForResult(intent, 1);第一个参数是Intent对象,包含要到达的Activity信息,第二个参数是requestCo ...

  5. 【Android】12.3 在当前Activity中获取另一个Activity的返回值

    分类:C#.Android.VS2015: 创建日期:2016-02-23 一.简介 在上一节的示例中,通过StartActivity(Intent)方法启动另一个Activity后,这两个Activ ...

  6. WF4.0 基础篇 (二十) ActivityWithResult 有返回值Activity

    本节主要介绍WF4 中 有返回值Activity的使用 本文例子下载: http://files.cnblogs.com/foundation/ActivityWithResultSample.rar ...

  7. Android 从一个Activity跳转到另一个Activity获取第二个Activity的返回值

    在做安卓开发的过程中,经常会在两个Activity之间传递数据,从第一个Activity传递数据到第二个Activity是很简单的,在第一个Activity中这样写代码 Intent intent = ...

  8. 从Activity返回结果

    1.背景: 通过startActivity启动的Activity独立于其父Activity,并且在关闭时不会提供任何反馈. 当需要反馈时,可以启动一个Activity作为另一个Activity的子Ac ...

  9. 实验3.1 简单实现Intent带返回值的跳转

    在这里实现的功能是当点击listview的某一子项是,启动一个确认删除相应记录的子Activity. 所以用到了带返回值的intent 父界面和子界面的前台代码 activity_main <? ...

最新文章

  1. ArcGIS API for Silverlight 入门学习笔记(三):基础地图实例
  2. 一种用户体验-显示对话框时灰化你的主窗体
  3. BOOST_PP_IS_EMPTY宏相关的测试程序
  4. 【渝粤教育】电大中专金融与税收作业 题库
  5. Tensorflow2.0(1):加载图片数据集--TFRecord
  6. 产品泛滥的时代,如何让你的产品脱颖而出?
  7. 学习clojure(2)
  8. NLP 自然语言分析理解
  9. pscp使用详解 Windows与Linux文件互传工具
  10. mysql中set和enum使用(简单介绍)
  11. Linux 查看端口状态 netstat
  12. 同城门户同城分类信息网站源码+小程序端+49款插件
  13. 如何在linux上运行asp网站,linux上搭建asp网站
  14. 喜欢的抖音视频只能收藏,不能保存?一篇文章教会你使用Python下载抖音无水印视频
  15. JS中变量存储在堆中还是栈中?(深入内存原理)
  16. 三亚旅游_原水_新浪博客
  17. linux一次三行显示文件内容,Linux 命令合集(二):查看文件及内容处理命令
  18. ASM027: 汇编常用工具
  19. MTK平台关于Metadata当中Size的配置
  20. python 调试,Python 学习入门--pydev调试

热门文章

  1. ifix与mysql_将 iFIX 与 Proficy Historian 配合使用
  2. GIS之旅——研究生总结
  3. SQL那些事儿(八)--oracle用户、表、表空间之间的关系
  4. 官方文档——一篇文章弄懂Flutter中的布局
  5. C#对象序列化与反序列化
  6. asp.net数据库连接web.config配置
  7. java 集合中对象的排序 和去重
  8. Spark核心RDD详述
  9. linux 析构函数地址获取_析构函数实现多态
  10. MySQL Front远程连接数据库