本节主要讨论下Activity之间(A和B)的数据该如何传递。
1、
A->B:A跳转到B的同时,将一些数据传递给B
代码实现:很简单,只需在A中生成Intent的时候,将需要传递的数据放到Intent中,如下:(1)A
Intent intent = new Intent();
intent.setClass(A.this, B.class);
Bundle bundle = new Bundle();
bundle.putString("story", "Tom&jerry");
intent.putExtra("tag", bundle);
startActivity(intent);
这里由于只是想传递个“Tom&jerry”给B,所以只需要使用intent.putExtras(String,String)即可,本例中使用bundle封装一次主要是考虑到如果有略微复杂的数据可以使用bundle的方式
(2)B
在B中接受A传递过来的数据,只需在B的oncreate()中如下处理:
Intent intent = getIntent();
Bundle bundle = intent.getBundleExtra("tag");
String storyName = bundle.getString("story");
2、
B得到数据后,还想返回A(或者将数据处理一下再返回给A),假设此时A已经finish了,我们想把数据带回A去
我们是不是还得像1一样重新将数据封装一次呢,如果这个数据数据的封装过程是很麻烦的,岂不是很糟糕?答案是否定的。我们可以在A中使用startActivityForResult(intent,0)来启动B,0为下一个activity要返回的依据,并重写onActivityResult方法,如下:
(1)在A中,跳转到B时不使用startActivity(intent)而是使用:
startActivityForResult(intent, 0);
(2)在A中,重写onActivityResult方法
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
switch (resultCode) {
case RESULT_OK:
Bundle bundle = data.getBundleExtra("tag");
String storyName = bundle.getString("story");
tv1.setText(storyName);
break;
default:
break;
}
}
(3)在B中,使用一个“返回B”的按钮,在其onclick中只需一句
B.this.setResult(RESULT_OK,intent);
即可实现返回A界面,并把数据传回给A,intent中的数据可以为A最开始传过来的数据,也可以是经过B处理过的数据。
其实,在B中直接使用startActivity(B.this,A.class),并在A的oncreate中判断Intent中有没有数据,有的话就带入数据,没有就传入null值,这样的方式也是可以实现,不过略显麻烦,既然系统提供给我们了这种startActivityForResult的方式,我们为什么不用呢?
分享到:
相关推荐
在Android应用开发中,Intent是一种强大的机制,用于在组件之间建立通信桥梁,特别是在Activity之间进行切换和数据传递。本文将详细讲解如何通过Intent实现Activity之间的切换,并探讨如何利用Intent进行数据传递。 ...
在Android应用开发中,Intent是连接应用程序组件的重要桥梁,它用于在不同的Activity、Service之间传递信息。`startActivityForResult()`是Intent的一种特殊用法,它允许一个Activity启动另一个Activity,并期望在新...
7. **Parcelable或Serializable**:对于复杂的数据结构,可以使用Parcelable或Serializable将数据封装成对象,然后通过Intent或自定义的Binder在PopupWindow和Activity之间传递。 在实际开发中,选择哪种方式取决于...
本文将详细介绍如何在两个`Activity`(假定为A和B)之间传递数据以及如何实现数据回传。 #### Activity间数据传递 假设我们有两个`Activity`:A和B。我们需要从A向B传递一些数据,以便B能够根据这些数据执行特定的...
显式Intent明确指定了要启动的Activity,通常用于在同一应用内的不同Activity之间传递数据;而隐式Intent则不指定具体的目标Activity,而是根据Intent中的Action、Data、Category等信息,由系统自动匹配合适的处理者...
在Android应用开发中,Activity是用户...无论是在启动Activity时传递简单数据,还是处理复杂的对象和数据流,都有相应的策略和最佳实践。在实际开发中,应根据需求选择合适的数据传递方式,同时注意性能和内存管理。
Intent不仅用于启动新的Activity,还能在它们之间传递数据。数据可以是基本类型,如字符串、整型,也可以是复杂对象,如自定义类的实例。 二、启动新Activity并传递基本数据 1. 创建Intent:使用`new Intent...
- 使用`startActivityForResult()`启动第二个Activity,并传递Intent。 - 在第二个Activity中,通过`getIntent().getIntExtra("key", defaultValue)`获取数据。 - 完成操作后,通过`setResult()`设置结果并`...
这个压缩包“Android应用源码之Intent”很可能会包含多个示例项目,演示了Intent的各种用法,包括启动Activity、传递数据、使用Intent Filter等,通过学习这些示例,开发者可以更好地理解和掌握Intent在实际开发中的...
首先,`startActivityForResult()`的使用通常涉及两个Activity:发起请求的Activity(我们称之为父Activity)和被启动的Activity(子Activity)。当父Activity调用`startActivityForResult()`启动子Activity时,会...
本教程将详细讲解如何在两个Activity之间实现数据传递,主要涉及三种常见方法:Intent的Extra数据、Bundle对象以及使用静态成员变量。我们首先从Intent的Extra数据开始。 1. **Intent的Extra数据**: Intent是...
通过`putExtra()`方法,Intent可以携带数据在Activity之间传递,支持多种数据类型,如字符串、整型、布尔值等。接收方通过`getStringExtra()`, `getIntExtra()`等方法获取数据: ```java // 发送方 Intent ...
在Android操作系统中,Intent是一种强大的机制,用于在应用程序的不同组件之间传递消息,它扮演着连接应用内部或跨应用通信的关键角色。本篇文章将全面解析Android Intent的使用及相关知识点。 首先,Intent主要有...
在Android开发中,Activity之间的数据传递是一个常见的任务,特别是在处理文件操作时。"activity之间传递文件"这个主题涉及了Android的Intent机制、文件系统管理以及可能的存储权限问题。在这个场景下,用户需要将名...
* Activity 组件:Intent 主要通过调用 Context.startActivity()、Context.startActivityForResult() 等方法实现传递,其结果就是启动一个新的 Activity 或者使当前 Activity 开始新的任务。 * Service 组件:Intent...
现在,关于"e_5_1 Chat Activities"这个压缩包文件,虽然没有具体的内容展示,但我们可以推测它可能包含了一个聊天应用相关的例子,演示了如何通过Intent在不同聊天Activity之间切换,同时传递和接收聊天消息。...
在Activity间传递数据,我们通常使用Intent的putExtra()和getExtra()方法。例如,我们可以传递基本数据类型如int、String,也可以传递复合数据类型如Parcelable、Serializable对象。以下是一些常用的数据传递示例: ...
在这种模式下,数据传递通常通过Intent的extras进行,比如使用`putExtra()`方法添加键值对,然后在目标Activity中用`getIntent().getExtras()`获取。 2. **单实例模式(SingleInstance)**:在整个任务栈中只有一个...
最后,使用`startActivity()`启动目标Activity并传递Intent: ```java startActivity(intent); ``` 2. 在TargetActivity中接收数据: 在TargetActivity的`onCreate()`方法中,通过`getIntent()`获取启动本Activity...
"Android通过Intent传递数据"这一主题,涵盖了Intent的基本使用和数据传递的方式。 Intent分为显式Intent和隐式Intent。显式Intent明确指定要启动的目标组件,而隐式Intent则不指定具体接收者,而是根据Intent的...