`
he91_com
  • 浏览: 399385 次
文章分类
社区版块
存档分类
最新评论

startActivityForResult启动另一个Activity并返回结果

 
阅读更多
startActivity可启动另一个Activity,用Intent传递数据,但不能返回数据。
用startActivityForResultIntent intent, Int requestCode),可启动另一个Activity并返回所需结果。


/*****************************/ 华丽丽的分割线/*****************************/

目的: A.java 是主界面,B.java 是子功能模块,要从A启动B,B干完活之后把结果汇报给A
先看 A.java 的相关代码

//--A.java--//
/*
* 要做两件事情,第一是用startActivityForResult() 启动B,其次是回收B的结果
*/
//启动B
Intent bintent = new Intent(A.this, B.class);
//设置 bintent的Bundle的一个值
String bsay = "Hello, this is B speaking";
bintent.putExtra("listenB", bsay)
startActivityForResult(bintent,0); // 参数(Intent intent, Int requestCode) 的 requestCode 对应下面回收Bundle时识别用的

//重写onActivityResult()来处理返回的数据,建议先看B.java 的代码再回来看这里比较好理解
//这理有三个参数 requestCode, resultCode, data
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (resultCode) { //resultCode为回传的标记,我在B中回传的是RESULT_OK
case RESULT_OK:
Bundle b=data.getExtras(); //data为B中回传的Intent
String str=b.getString("ListenB");//str即为回传的值"Hello, this is B speaking"
/* 得到B回传的数据后做什么... 略 */
break;
default:
break;
}
}

-------------------------------------------------------------------------------------
//-- B.java--//
// 用setResut() 准备好要回传的数据后,只要使用finish()的方法就能把打包好的数据发给A且运行onActivityResult()部分的代码

Intent aintent =new Intent(B.this, A.class);
/* 将数据打包到aintent Bundle 的过程略 */
setResut(RESULT_OK,aintent); //这理有2个参数(int resultCode, Intent intent)
... ...
finish();

/**我在另外一本书中看到的代码是这样的:
Intent aintent = getIntent();
B.this.SetResult(0,aintent);
B.this.finish();
**/


-------------------------------------------------------------------------------------
OK,代码如上,可能这个时候还会有点疑问,关于参数的疑问。直接看android sdk 帮助说得更清楚。我发现网上有些文章还有吧 requestCode 和 resultCode 混淆说明错的。
startActivityForResult(Intent intent, Int requestCode)
intent 传给B的,不解释,看不懂你还是玩玩手机算了,别想开发的事情了
requestCode >=0就好,随便用于在onActivityResult()区别哪个子模块回传的数据,如果还有C.java ,D甚至E子模块的话,每个区分开不同的requestCode就好。

setResut(int resultCode, Intent intent)
resultCode 如果B子模块可能有几种不同的结果返回,可以用这个参数予以识别区分。这里还有个特殊的 RESULT_OK 值,没有特殊情况用它就好了,sdk有说明的,呵。
intent 继续不解释,传回给A的onActivityResult()

onActivityResult(int requestCode, int resultCode, Intent intent)
这里三个都不用解释了,与上文对应的东西。如果不对requestCode和resultCode 加以识别区分的话,只要有其他activity setResult到了A onActivityResult()会无差别处理。

注意两个Code的区别,有多个子模块、多种返回结果时,要分开处理。

分享到:
评论

相关推荐

    启动另一个Activity并返回结果(附源码)

    通过以上讲解,我们可以理解如何在Android中使用`startActivityForResult()`启动另一个Activity并返回结果。实践中,应根据具体需求设计合理的请求码和数据结构,确保不同Activity间的通信顺畅。同时,注意处理可能...

    Android之Intent通过startActivityForResult方法启动新Activity

    `startActivityForResult()`是Intent的一种特殊用法,它允许一个Activity启动另一个Activity,并期望在新Activity执行完特定操作后返回结果。下面将详细阐述`startActivityForResult()`的工作原理及其在实际开发中的...

    StartActivityForResult小例子

    在Android应用开发中,`StartActivityForResult`是一个关键的机制,它允许一个Activity启动另一个Activity,并期待在后者完成时返回一些结果。这个过程涉及到两个主要的Activity:启动者(调用`...

    034集-启动带返回结果的Activity

    当你需要从一个Activity(我们称之为启动Activity)启动另一个Activity(我们称之为子Activity),并且希望在子Activity完成操作后返回结果,可以使用`startActivityForResult()`。这个方法需要两个参数:一个是...

    测试Activity的四种启动模式对startActivityForResult的影响

    在Android应用开发中,`Activity`是用户界面的主要载体,而`startActivityForResult`方法则用于在一个`Activity`中启动另一个`Activity`并期待得到返回的结果。本文将深入探讨`Activity`的四种启动模式(Standard、...

    StartActivityForResult

    在Android应用开发中,`StartActivityForResult`是一个关键的组件交互方法,用于在一个Activity(活动)启动另一个Activity并期望得到返回结果。这个方法允许开发者在应用程序的不同组件之间传递数据,通常用于实现...

    startActivityForResult的详细用法

    在Android应用开发中,`startActivityForResult`是一个非常重要的方法,它允许我们在启动一个Activity时传递数据,并在那个Activity执行完后返回结果到调用它的Activity。这个过程涉及到Intent、生命周期管理和数据...

    Android review 打开activity返回结果

    当我们需要在一个Activity启动另一个Activity并期待得到一些结果时,就需要使用到`startActivityForResult()`方法,这就是“Android review 打开activity返回结果”这个话题的核心。下面将详细介绍这个过程及其相关...

    关于Activity与Fragment混用中对于startActivityForResult方法的解析示例

    `startActivityForResult()`方法用于启动一个新的Activity,并期望在目标Activity执行完后返回结果。其基本用法如下: ```java Intent intent = new Intent(this, TargetActivity.class); startActivityForResult...

    Activity实例详解之启动activity并返回结果

    当我们需要从一个Activity(我们称为启动Activity)启动另一个Activity(我们称为被启动Activity),并在被启动Activity执行完某些操作后返回数据到启动Activity,可以使用`startActivityForResult(Intent intent, ...

    启动Activity

    总结来说,`startActivityForResult`是Android开发中启动Activity并期待返回结果的一种方式,它使得Activity之间可以进行数据交换,常用于实现选择图片、输入数据等需要用户交互并返回结果的操作。理解并熟练运用这...

    startActivityForResult Demo

    `startActivityForResult`的工作原理是这样的:当一个Activity(我们称为启动Activity)调用`startActivityForResult`启动另一个Activity(我们称为被启动Activity)时,可以传递一个Intent对象,Intent中可以包含...

    android调用另一个activity

    6. **Activity的返回结果**: 如果需要从新启动的Activity返回结果给原Activity,可以使用`startActivityForResult()`方法,并在目标Activity中调用`setResult()`,然后在原Activity的`onActivityResult()`方法中处理...

    Android父Activity获取子Activity返回信息demo

    在上面的代码中,`MY_REQUEST_CODE`是你自定义的一个请求码,用来标识这是哪个子Activity返回的结果。`resultCode`检查是否为`RESULT_OK`,表示子Activity正常结束并返回了结果。`data`是子Activity返回的Intent,...

    带返回值的Activity启动

    `startActivityForResult`方法是Android SDK提供的一种特殊启动Activity的方式,主要用于实现从一个Activity(我们称之为"启动者"或"父Activity")启动另一个Activity("被启动者"或"子Activity"),并在子Activity...

    【android】的startActivityForResult

    在Android应用开发中,`startActivityForResult`是一个关键方法,用于在两个Activity之间进行交互,尤其是在需要从一个Activity启动另一个Activity并期待返回结果时。这个方法允许开发者在启动新的Activity时传递...

    如何启动另外一个应用的任意Activity

    如果需要启动的Activity返回结果,可以使用startActivityForResult()方法,并重写onActivityResult()来接收结果。 总结,启动另一个应用的任意Activity主要依赖于Intent对象,通过设置Action、Data、Category等属性...

    startActivityForResultDemo

    在Android应用开发中,`startActivityForResult`是一个关键方法,用于从一个Activity启动另一个Activity,并期望在后者执行完特定操作后返回结果。这个方法广泛应用于数据交互、用户选择操作(如选择图片、文件等)...

    案例八(启动带有返回值的activity

    "启动带有返回值的Activity"是Android编程中的一个重要概念,它涉及到如何在启动一个Activity后获取其执行结果并返回到调用者Activity。这个过程通常通过Intent、startActivityForResult()方法和onActivityResult()...

Global site tag (gtag.js) - Google Analytics