`

android中使用startActivityForResult回传数据

 
阅读更多

假设:我这里有两个Activity:A和B,从A中向B中传递数据的时候采用的是Bundle封装数据,然后从A中跳转到B中,当B有需求将数据封装起来回传给A并跳转回A。那么A中接收数据时还要先判断Bundle是否为空,因为第一次访问A的时候(即B还没有回传的时候),Bundle是为空的,这样显然是比较麻烦的,不明智的做法。

还好startActivityForResult来做跳转给了我们更好的解决办法。


1.跳转的时候不是采用startActivity(intent) 这个方法,而是startActivityForResult(intent, 0)。

 

 

 Intent intent=new Intent();
 intent.setClass(A.this, B.class);
 Bundle bundle=new Bundle();
 String str1="aaaaaa"; 
 bundle.putString("str1", str1);
 intent.putExtras(bundle);
 startActivityForResult(intent, 0);
//这里采用startActivityForResult来做跳转,此处的0为一个依据,可以写其他的值,但一定要>=0


2.重写onActivityResult方法,用来接收B回传的数据。

 

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("str1");//str即为回传的值
       break;
   default:
       break;
   }
 }
 

 

3.在B中回传数据时采用setResult方法,并且之后要调用finish方法。

这样当B中调用finish方法的时候,跳转到A时会自动调用onActivityResult方法,来获取B中回传的intent了。 

 

setResult(RESULT_OK, intent); //intent为A传来的带有Bundle的intent,当然也可以自己定义新的Bundle
finish();//此处一定要调用finish()方法

 

这样当B中调用finish方法的时候,跳转到A时会自动调用onActivityResult方法,来获取B中回传的intent了。

 

 

分享到:
评论

相关推荐

    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之间的数据回传

    在启动新Activity时,我们可以把这些数据打包进Intent的Extras中,然后在接收Activity中使用getIntent().getExtras()来获取这些数据。 3. **StartActivityForResult()**: 当需要从目标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页面之间进行数据回传的方法分析

    最后,使用`startActivityForResult()`方法启动页面2,并指定一个请求码,用于在数据回传时识别哪个请求返回了数据: ```java startActivityForResult(intent, 0); ``` 在页面2中,我们需要获取传入的数据。这可以...

    android开发中的传值方式

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

    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 ...

    ActivityForResult

    总结来说,`startActivityForResult()`和`setResult()`是Android中实现`Activity`间通信的重要手段,尤其适用于需要返回数据的情况。通过理解这两个方法以及如何在`onActivityResult()`中处理返回的结果,开发者能够...

    Activity回传值

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

Global site tag (gtag.js) - Google Analytics