`

android中使用startActivityForResult回传数据(二)

 
阅读更多


目的: 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()会无差别处理。


总结:2个Activity转换,A转B后,B返回参数A接受,A在onActivityResult方法里面根据requestCode来判断处理方法

分享到:
评论

相关推荐

    android Activity之间数据的回传

    但是当我们需要从被启动的Activity回传数据给启动它的Activity时,就需要使用`startActivityForResult()`了。 #### 三、`startActivityForResult()`详解 `startActivityForResult()`是一种特殊的Activity启动方式...

    实验八 使用Intent回传数据

    本实验的主题“使用Intent回传数据”聚焦于如何通过Intent对象在活动(Activity)之间进行数据的传递,这对于理解和构建复杂的Android应用程序至关重要。 1. **Intent基础**: Intent主要分为显式Intent和隐式...

    startActivityForResult的详细用法

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

    Android开发 猴子摘桃小项目——学习Activity之间的数据回传

    下面将详细阐述在Android中Activity间数据回传的关键知识点。 1. **Intent**: Intent是Android系统中用于启动Activity或Service的意图对象,同时也被用于在Activity之间传递数据。在"猴子摘桃"项目中,我们可能通过...

    安卓开发-Activity间数据传递和回传

    1. **在B中准备回传数据**:在B中,当需要将数据回传给A时,同样通过`Intent`对象携带数据,并使用`setResult()`方法将其设置为返回结果。 ```java Intent newIntent = new Intent(); newIntent.putExtra(...

    (自测)Android开发 猴子摘桃小项目学习Activity之间的数据回传

    resultIntent.putExtra("key", "回传数据"); setResult(RESULT_OK, resultIntent); finish(); ``` 在父Activity中,重写`onActivityResult()`方法来接收回传的数据: ```java @Override protected void ...

    Html调Android拍照回传地址回显

    以上就是关于"Html调Android拍照回传地址回显"的知识点详解,涵盖了混合开发中的H5与Android交互、相机调用、图片处理以及数据传输等多个方面。掌握这些技术,可以帮助开发者构建更加丰富且功能强大的混合应用。

    页面跳转与数据回传

    在`IntentTest`项目中,可能包含了一些示例代码,演示了如何使用`startActivityForResult()`启动一个新Activity,然后在新Activity中执行某些操作并回传数据。这个项目可以帮助开发者更好地理解和实践上述概念。 ##...

    android拍照截图回传

    在Android开发中,"android拍照截图回传"这个主题涉及到几个关键知识点,包括启动相机、截取屏幕图像以及处理返回的数据。以下是对这些知识点的详细解释: 1. **启动相机**: 在Android中,我们可以使用`Intent`来...

    【Android开发】不同Activity之间的数据回传实例(一)摘桃子游戏

    在这个“摘桃子游戏”实例中,我们学习了如何在Android的不同Activity之间传递和回传数据,这对于构建复杂的应用程序至关重要。理解并熟练掌握这一技术,可以帮助我们更高效地组织和管理应用程序的流程。同时,我们...

    android开发中的传值方式

    在Android应用开发中,数据的传递是至关重要的。本文主要探讨两种常见的传值方式:从一个页面(Activity)跳转到另一个页面时传递值,以及从第二个页面返回时将值带回给第一个页面。 首先,我们来看第一种传值方式...

    Android页面之间进行数据回传的方法分析

    这里我们着重探讨的是如何在Android页面之间进行数据回传,即从第二个页面返回到第一个页面时,携带数据一起返回。这通常用于实现用户在子页面完成某些操作后,将结果传递回主页面进行进一步的处理。 首先,从页面1...

    Androidstudio电话联系人及详情页

    如果需要回传数据(例如,用户编辑了联系人信息),可以使用startActivityForResult()启动详情页,然后在onActivityResult()中处理返回的结果。 在详情页中,我们需要根据接收到的联系人数据来填充UI元素。这可能...

    Android上机实验

    **Intent回传数据**:当一个Activity需要返回结果给启动它的Activity时,可以使用startActivityForResult()方法启动新Activity,并在完成操作后通过setResult()设置结果,原Activity会在onActivityResult()回调中...

    基于startActivityForResult方法处理两个Activity之间数据传递问题

    总结起来,`startActivityForResult`是Android中实现Activity间数据双向传递的有效手段,它提供了发送请求、处理结果的完整流程。在实际开发中,可以灵活运用这个方法来解决各种数据交互场景,比如选择图片、填写...

    android画面跳转及传值实例代码

    对于`Activity2`的跳转,额外使用了`startActivityForResult()`方法,这是因为可能需要从`Activity2`回传数据到`Wh4Activity`,这将在下文中详细讨论。 #### 二、数据传递 在跳转到`Activity2`时,代码通过`intent...

    android核心技术与实例详解光盘源代码1

    - 学习使用startActivityForResult()进行数据回传。 5. **第5章:多线程与异步处理** - 理解Android中的主线程(UI线程)和子线程,以及它们之间的交互限制。 - 使用Handler、Looper和Message进行线程间通信。 ...

    intent实现两个activity间的数据传输

    5. **回传数据到Activity1** 当Activity2需要将数据返回给Activity1时,可以通过设置结果并使用`setResult()`方法。通常在完成某些操作后(比如用户做出选择),调用`finish()`结束当前Activity: ```java ...

    Activity回传值

    在Android中,当你启动一个新的`Activity`并希望在用户完成某些操作后得到结果,就需要使用`startActivityForResult()`方法而不是普通的`startActivity()`. 这个方法允许你在启动`Activity`时设置一个请求码,当目标...

    android 联系人

    以上就是关于Android中Intent的使用,特别是涉及联系人数据传递和Activity间结果回传的核心知识点。了解并熟练掌握这些概念对于开发涉及多个Activity交互的应用至关重要。在实际项目中,还应注意数据安全和性能优化...

Global site tag (gtag.js) - Google Analytics