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对象在活动(Activity)之间进行数据的传递,这对于理解和构建复杂的Android应用程序至关重要。 1. **Intent基础**: Intent主要分为显式Intent和隐式...
但是当我们需要从被启动的Activity回传数据给启动它的Activity时,就需要使用`startActivityForResult()`了。 #### 三、`startActivityForResult()`详解 `startActivityForResult()`是一种特殊的Activity启动方式...
图1为该应用的首界面(第一个Activity),用户在编辑框中可录入个人注册信息,点击“选择头像”按钮后转到图2所示的界面(第二个Activity),在图2中点中某个头像后返回到图3(仍然是第一个Activity),并把选中的...
在sendBroadcast,startActivity时,我们会用到Intent。 Intent可以携带一些数据,比如基本类型数据int、Boolean,或是String,或是序列化对象,Parcelable与Serializable。 Intent传递数据时,如果数据太大,可能...
1. **在B中准备回传数据**:在B中,当需要将数据回传给A时,同样通过`Intent`对象携带数据,并使用`setResult()`方法将其设置为返回结果。 ```java Intent newIntent = new Intent(); newIntent.putExtra(...
当从一个Activity返回到另一个Activity时,可以通过startActivityForResult()启动,然后在原Activity中重写onActivityResult()方法,接收返回的数据。 通过以上内容,我们可以了解到Intent在Android开发中的核心...
1. 在目标Activity中设置结果:当需要回传数据时,在目标Activity中调用setResult()方法,同时可以附带一个Intent,用于传递回传的数据。 ```java Intent resultIntent = new Intent(); resultIntent.putExtra("key...
Android Studio 3.0 下使用Intent传递数据和数据回传的示例。实现了一个简单的登录界面,用户输入用户名和密码后,点击登录把用户名和密码传递到主界面,主界面显示用户名和密码,然后在主界面中购买一个物品,打开...
android Activity& android Intent详解, 入门级别
或者,如果需要在返回结果后继续执行原Activity的代码,可以使用`startActivityForResult()`,并覆盖`onActivityResult()`方法来接收返回的数据。 4. 隐式Intent的使用: 对于隐式Intent,我们不需要指定具体的...
Android 页面跳转和 Intent 详解,Bundle 类介绍说明 Android 页面跳转是移动应用程序中的一种基本交互方式,通过 Intent 和 Activity 两个组件来实现。Intent 是 Android 中的一个核心组件,用于在不同的 Activity...
`startActivityForResult()`是Intent的一种特殊用法,它允许一个Activity启动另一个Activity,并期望在新Activity执行完特定操作后返回结果。下面将详细阐述`startActivityForResult()`的工作原理及其在实际开发中的...
当父Activity调用`startActivityForResult()`启动子Activity时,会传入一个Intent对象,Intent可以携带数据到子Activity。同时,需要指定一个请求码(request code),用于在子Activity返回结果时区分不同的请求。 ...
Intent分为四种主要类型:显式Intent、隐式Intent、系统Intent和使用`startActivityForResult`的Intent。下面将对这四个部分进行详细介绍。 ### 1. 显式Intent 显式Intent是最直接的Intent类型,它们明确地指定要...
使用startActivity(Intent)或startActivityForResult(Intent, 请求码)方法启动Activity。startActivityForResult()用于需要接收返回结果的情况。 五、启动Service 使用startService(Intent)或bindService(Intent, ...
5. **回传数据到Activity1** 当Activity2需要将数据返回给Activity1时,可以通过设置结果并使用`setResult()`方法。通常在完成某些操作后(比如用户做出选择),调用`finish()`结束当前Activity: ```java ...
当我们需要从一个Activity跳转到另一个Activity时,通常会使用Intent作为媒介来实现数据传递。Intent不仅用于启动新的Activity,还能用于启动服务或者广播接收器。在这个过程中,数据传输是通过Intent的 extras 属性...
下面将详细阐述在Android中Activity间数据回传的关键知识点。 1. **Intent**: Intent是Android系统中用于启动Activity或Service的意图对象,同时也被用于在Activity之间传递数据。在"猴子摘桃"项目中,我们可能通过...
通过Intent的putExtra()和getExtra()方法,我们可以在启动新Activity时携带数据,或者在不同Activity之间共享数据。这使得Intent成为了Android中数据传递的重要工具。 此外,Intent还可以用于服务(Service)启动,...
resultIntent.putExtra("key", "回传数据"); setResult(RESULT_OK, resultIntent); finish(); ``` 在父Activity中,重写`onActivityResult()`方法来接收回传的数据: ```java @Override protected void ...