`
elvajxw
  • 浏览: 107781 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Android startActivityForResult()和onActivityResult()的用法

阅读更多

引用:http://hi.baidu.com/winnyang/blog/item/25feb64ecf370ac4d0c86a48.html

目的: 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();
-------------------------------------------------------------------------------------
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()会无差别处理。
分享到:
评论

相关推荐

    Android中onActivityResult的用法

    Android 中 onActivityResult 的用法 Android 中的 onActivityResult 是一个非常重要的回调函数,它允许活动之间进行数据交互。下面我们将详细介绍 onActivityResult 的用法和实现原理。 一、什么是 ...

    【android】的startActivityForResult

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

    Android onActivityResult和setResult方法详解及使用

    在Android应用程序开发中,`onActivityResult()` 和 `setResult()` 方法是两个非常关键的组件,它们用于在不同的Activity之间传递数据和控制流程。当我们需要从一个Activity启动另一个Activity并期待返回结果时,这...

    Android-一种startActivityForResult更简单流程

    在Android应用开发中,`startActivityForResult()`是一个关键方法,用于在不同的Activity之间进行通信,尤其是在需要从一个Activity返回结果到另一个Activity时。这个方法使得开发者可以启动一个新的Activity,并...

    Android-基于RxPermissions框架思想在使用startActivityForResult可以不重写onActivityResult回调

    在Android开发中,`startActivityForResult`方法是用于启动一个新的Activity并等待其返回结果的关键机制。通常情况下,当从子Activity返回时,我们需要重写`onActivityResult`回调来处理返回的数据。然而,随着...

    startActivityForResult的详细用法

    总的来说,`startActivityForResult`是Android应用中实现Activity间数据交换的关键机制,理解和熟练使用它对于开发复杂的Android应用至关重要。通过这种方式,我们可以灵活地在不同的Activity之间传递信息,实现用户...

    Android startActivityForResult和setResult的区别

    然而,很多开发者对这两个方法的区别和使用场景不甚了解,本文将详细介绍 Android startActivityForResult 和 setResult 的区别。 startActivityForResult 的使用 startActivityForResult 方法用于启动一个新的 ...

    告别onActivityResult 工具类DEMO

    总结起来,这个DEMO展示了如何利用新的Android API来替换传统的`onActivityResult`方法,简化了数据交换和权限管理的代码,提高了代码的可读性和可维护性。通过代理模式和`ActivityResultContracts`,开发者可以更好...

    Android startActivityForResult实例详解

    在本文中,我们将详细介绍Android startActivityForResult实例详解的相关信息,包括它的使用方法、实现步骤、返回结果处理等方面。 一、startActivityForResult的使用方法 startActivityForResult是Android中一个...

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

    在Android应用开发中,`startActivityForResult()`是一个常用且重要的功能,熟练掌握其使用能有效提高用户体验和应用的可维护性。在实际项目中,结合具体的业务场景灵活运用,可以使应用的交互更加顺畅。

    StartActivityForResult

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

    android startActivityForResult的使用方法介绍

    接下来,我们将详细讨论`startActivityForResult()`的使用方法。 ### 1. 方法签名 `startActivityForResult()` 的方法签名如下: ```java public void startActivityForResult(Intent intent, int requestCode) ```...

    android之activity的生命周期和launchMode、onActivityResult方法的作用

    总结来说,理解Activity的生命周期、熟练运用launchMode以及正确使用onActivityResult方法,对于编写稳定、高效、用户体验良好的Android应用至关重要。通过实际的代码测试和实验,开发者可以更好地掌握这些核心概念...

    Android中Fragment多层嵌套时onActivityResult无法正确回调问题的解决方法

    为了解决这个问题,我们需要深入分析源码,了解Android系统是如何处理startActivityForResult和onActivityResult的。以support-v4库版本22.2.1为例,我们首先来看Fragment的startActivityForResult方法。在这个方法...

    onActivityResult传值的使用

    本文将深入探讨`onActivityResult`的使用方法以及它在Android开发中的重要性。 `onActivityResult` 方法定义在 `Activity` 类中,具有以下签名: ```java protected void onActivityResult(int requestCode, int ...

    OnActivityResult

    然而,由于Android的更新和设计模式的变化,`ActivityGroup`现在已被废弃,取而代之的是Fragment和FragmentTransaction的使用。尽管如此,理解`ActivityGroup`及其遇到的问题仍然对处理遗留代码或理解历史项目有帮助...

    Android基础之startActivityForResult()的用法详解

    在Android应用开发中,`startActivityForResult()`是一个关键方法,用于在一个Activity启动另一个Activity并在完成特定操作后返回结果。此方法常用于实现如选择图片、输入数据等需要用户交互并返回结果的情景。本文...

Global site tag (gtag.js) - Google Analytics