`
yoyotota
  • 浏览: 63613 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

Activity之间的数据传递_Intent和startActivityForResult的使用

 
阅读更多
本节主要讨论下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的方式,我们为什么不用呢?
0
2
分享到:
评论

相关推荐

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

    在Android应用开发中,Intent是一种强大的机制,用于在组件之间建立通信桥梁,特别是在Activity之间进行切换和数据传递。本文将详细讲解如何通过Intent实现Activity之间的切换,并探讨如何利用Intent进行数据传递。 ...

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

    在Android应用开发中,Intent是连接应用程序组件的重要桥梁,它用于在不同的Activity、Service之间传递信息。`startActivityForResult()`是Intent的一种特殊用法,它允许一个Activity启动另一个Activity,并期望在新...

    Android PopupWindow与Activity之间的数据传递.zip

    7. **Parcelable或Serializable**:对于复杂的数据结构,可以使用Parcelable或Serializable将数据封装成对象,然后通过Intent或自定义的Binder在PopupWindow和Activity之间传递。 在实际开发中,选择哪种方式取决于...

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

    本文将详细介绍如何在两个`Activity`(假定为A和B)之间传递数据以及如何实现数据回传。 #### Activity间数据传递 假设我们有两个`Activity`:A和B。我们需要从A向B传递一些数据,以便B能够根据这些数据执行特定的...

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

    显式Intent明确指定了要启动的Activity,通常用于在同一应用内的不同Activity之间传递数据;而隐式Intent则不指定具体的目标Activity,而是根据Intent中的Action、Data、Category等信息,由系统自动匹配合适的处理者...

    Activity review activity之间的数据传递

    在Android应用开发中,Activity是用户...无论是在启动Activity时传递简单数据,还是处理复杂的对象和数据流,都有相应的策略和最佳实践。在实际开发中,应根据需求选择合适的数据传递方式,同时注意性能和内存管理。

    Activity之间的简单数据传递

    Intent不仅用于启动新的Activity,还能在它们之间传递数据。数据可以是基本类型,如字符串、整型,也可以是复杂对象,如自定义类的实例。 二、启动新Activity并传递基本数据 1. 创建Intent:使用`new Intent...

    activity之间的数据传递(SeekBaar版)

    - 使用`startActivityForResult()`启动第二个Activity,并传递Intent。 - 在第二个Activity中,通过`getIntent().getIntExtra("key", defaultValue)`获取数据。 - 完成操作后,通过`setResult()`设置结果并`...

    Android应用源码之Intent_Intent.zip

    这个压缩包“Android应用源码之Intent”很可能会包含多个示例项目,演示了Intent的各种用法,包括启动Activity、传递数据、使用Intent Filter等,通过学习这些示例,开发者可以更好地理解和掌握Intent在实际开发中的...

    startActivityForResult intent 跳转相关的

    首先,`startActivityForResult()`的使用通常涉及两个Activity:发起请求的Activity(我们称之为父Activity)和被启动的Activity(子Activity)。当父Activity调用`startActivityForResult()`启动子Activity时,会...

    两个activity之间的数据传递

    本教程将详细讲解如何在两个Activity之间实现数据传递,主要涉及三种常见方法:Intent的Extra数据、Bundle对象以及使用静态成员变量。我们首先从Intent的Extra数据开始。 1. **Intent的Extra数据**: Intent是...

    Activity之间的Intent跳转

    通过`putExtra()`方法,Intent可以携带数据在Activity之间传递,支持多种数据类型,如字符串、整型、布尔值等。接收方通过`getStringExtra()`, `getIntExtra()`等方法获取数据: ```java // 发送方 Intent ...

    Android_intent_大全

    在Android操作系统中,Intent是一种强大的机制,用于在应用程序的不同组件之间传递消息,它扮演着连接应用内部或跨应用通信的关键角色。本篇文章将全面解析Android Intent的使用及相关知识点。 首先,Intent主要有...

    activity之间传递文件

    在Android开发中,Activity之间的数据传递是一个常见的任务,特别是在处理文件操作时。"activity之间传递文件"这个主题涉及了Android的Intent机制、文件系统管理以及可能的存储权限问题。在这个场景下,用户需要将名...

    Android_Intent和Intent_Filter详解

    * Activity 组件:Intent 主要通过调用 Context.startActivity()、Context.startActivityForResult() 等方法实现传递,其结果就是启动一个新的 Activity 或者使当前 Activity 开始新的任务。 * Service 组件:Intent...

    android 利用intent调用activity 简明精炼的例子

    现在,关于"e_5_1 Chat Activities"这个压缩包文件,虽然没有具体的内容展示,但我们可以推测它可能包含了一个聊天应用相关的例子,演示了如何通过Intent在不同聊天Activity之间切换,同时传递和接收聊天消息。...

    Intent数据传递实用方法

    在Activity间传递数据,我们通常使用Intent的putExtra()和getExtra()方法。例如,我们可以传递基本数据类型如int、String,也可以传递复合数据类型如Parcelable、Serializable对象。以下是一些常用的数据传递示例: ...

    android Activity之间的数据传递

    在这种模式下,数据传递通常通过Intent的extras进行,比如使用`putExtra()`方法添加键值对,然后在目标Activity中用`getIntent().getExtras()`获取。 2. **单实例模式(SingleInstance)**:在整个任务栈中只有一个...

    Android开发 两个Activity之间通过Intent跳转传值

    最后,使用`startActivity()`启动目标Activity并传递Intent: ```java startActivity(intent); ``` 2. 在TargetActivity中接收数据: 在TargetActivity的`onCreate()`方法中,通过`getIntent()`获取启动本Activity...

    Android通过Intent传递数据

    "Android通过Intent传递数据"这一主题,涵盖了Intent的基本使用和数据传递的方式。 Intent分为显式Intent和隐式Intent。显式Intent明确指定要启动的目标组件,而隐式Intent则不指定具体接收者,而是根据Intent的...

Global site tag (gtag.js) - Google Analytics