`
moor212
  • 浏览: 176071 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Activity(Intent)回传数据详解 startActivityForResult()

 
阅读更多
startActivityForResult()的用法其实很简单,弄清楚API文档中的传递流程和参数一般不会出错。

(1)startActivity()是异步操作,开启新的ActivityB与原ActivityA异步执行。 (2)startActivityForResult()是同步操作,ActivityA在开启新的ActivityB后将自己堵塞,只到ActivityB退出后ActivityA才继续执行,并根据ActivityB返回的结果进行下一步操作。

假设现在有两个Activity:A与B,A通过startActivityForResult()方法开启B,则方法的使用及流程如下。

<1>在A中:

startActivityForResult(Intent intent, Int requestCode)
intent指定了要开启B,且包含了从A传给B的数据。
requestCode >=0,如果A还要开启C,D那么requestCode就对应不同的值,以此区分。在后面的onActivityResult()中,需要以此来区分各个子Activity传回的结果。
如: startActivityForResult(intent,1);  --1:B
startActivityForResult(intent,2);  --2:C
startActivityForResult(intent,3);  --3:C
   protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        switch (requestCode) {
              case 1:
                    ...
                    break;
              case 2:
                    ...
                    break;
               case 3:
                    ...
                    break;
            default:
             break;
}

<2>在B中:

setResut(int resultCode, Intent intent)
resultCode 如果B可能有几种不同的返回结果,需要用这个参数来识别。
intent 在这里指定了返回A,主要是用来放额外的数据,最终会传回给A的onActivityResult()

<3>最后在A中:

onActivityResult(int requestCode, int resultCode, Intent intent)

requestCode用来区分具体是哪个子Activity传回来的。

resultCode用来区分该子Activity返回的结果是什么,用一个switch语句就可以加以区分顺便执行对应操作。

intent则是在B中调用setResult时传回的那个intent。








分享到:
评论

相关推荐

    实验八 使用Intent回传数据

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

    android Activity之间数据的回传

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

    实验9 使用Intent回传数据与生命周期

    图1为该应用的首界面(第一个Activity),用户在编辑框中可录入个人注册信息,点击“选择头像”按钮后转到图2所示的界面(第二个Activity),在图2中点中某个头像后返回到图3(仍然是第一个Activity),并把选中的...

    Android Intent传递数据大小限制详解

    在sendBroadcast,startActivity时,我们会用到Intent。 Intent可以携带一些数据,比如基本类型数据int、Boolean,或是String,或是序列化对象,Parcelable与Serializable。 Intent传递数据时,如果数据太大,可能...

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

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

    通过Intent实现Activity之间的切换,并传递数据

    当从一个Activity返回到另一个Activity时,可以通过startActivityForResult()启动,然后在原Activity中重写onActivityResult()方法,接收返回的数据。 通过以上内容,我们可以了解到Intent在Android开发中的核心...

    使用intent传值和回传值

    1. 在目标Activity中设置结果:当需要回传数据时,在目标Activity中调用setResult()方法,同时可以附带一个Intent,用于传递回传的数据。 ```java Intent resultIntent = new Intent(); resultIntent.putExtra("key...

    Android Studio 3.0 下使用Intent传递数据和数据回传的示例

    Android Studio 3.0 下使用Intent传递数据和数据回传的示例。实现了一个简单的登录界面,用户输入用户名和密码后,点击登录把用户名和密码传递到主界面,主界面显示用户名和密码,然后在主界面中购买一个物品,打开...

    Activity&Intent详解.pptx

    android Activity& android Intent详解, 入门级别

    实验七 使用Intent在Activity间传输数据

    或者,如果需要在返回结果后继续执行原Activity的代码,可以使用`startActivityForResult()`,并覆盖`onActivityResult()`方法来接收返回的数据。 4. 隐式Intent的使用: 对于隐式Intent,我们不需要指定具体的...

    android-页面跳转-Activity&Intent详解,Bundle类介绍说明.doc

    Android 页面跳转和 Intent 详解,Bundle 类介绍说明 Android 页面跳转是移动应用程序中的一种基本交互方式,通过 Intent 和 Activity 两个组件来实现。Intent 是 Android 中的一个核心组件,用于在不同的 Activity...

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

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

    startActivityForResult intent 跳转相关的

    当父Activity调用`startActivityForResult()`启动子Activity时,会传入一个Intent对象,Intent可以携带数据到子Activity。同时,需要指定一个请求码(request code),用于在子Activity返回结果时区分不同的请求。 ...

    Android中Intent的详解(显式,隐式,系统,startActivityForResult);

    Intent分为四种主要类型:显式Intent、隐式Intent、系统Intent和使用`startActivityForResult`的Intent。下面将对这四个部分进行详细介绍。 ### 1. 显式Intent 显式Intent是最直接的Intent类型,它们明确地指定要...

    Android+Intent机制实例详解.rar

    使用startActivity(Intent)或startActivityForResult(Intent, 请求码)方法启动Activity。startActivityForResult()用于需要接收返回结果的情况。 五、启动Service 使用startService(Intent)或bindService(Intent, ...

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

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

    启动另一个Activity并利用Intent传输数据

    当我们需要从一个Activity跳转到另一个Activity时,通常会使用Intent作为媒介来实现数据传递。Intent不仅用于启动新的Activity,还能用于启动服务或者广播接收器。在这个过程中,数据传输是通过Intent的 extras 属性...

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

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

    android中Activity和Intent的关系

    通过Intent的putExtra()和getExtra()方法,我们可以在启动新Activity时携带数据,或者在不同Activity之间共享数据。这使得Intent成为了Android中数据传递的重要工具。 此外,Intent还可以用于服务(Service)启动,...

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

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

Global site tag (gtag.js) - Google Analytics