`
wx1569488408
  • 浏览: 79122 次
文章分类
社区版块
存档分类
最新评论

Android——通过Intent,Bundle在activity间进行数据传递

 
阅读更多

在安卓activity的数据传递中,Intent和bundle都是用的极多的传递参数的工具。本文就讲介绍Intent与Bundle并简述如何进行参数传递。

1.Intent是什么

Intent的中文意思是“意图,意向”,在Android中提供了Intent机制来协助应用间的交互与通讯,Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用。Intent不仅可用于应用程序之间,也可用于应用程序内部的Activity/Service之间的交互。因此,可以将Intent理解为不同组件之间通信的“媒介”专门提供组件互相调用的相关信息。

2.Bundle是什么

Bundle主要用于传递数据;它保存的数据,是以key-value(键值对)的形式存在的。

我们经常使用Bundle在Activity之间传递数据,传递的数据可以是boolean、byte、int、long、float、double、string等基本类型或它们对应的数组,也可以是对象或对象数组。当Bundle传递的是对象或对象数组时,必须实现Serializable或Parcelable接口。

3.传递数据

传递基本类型的数据主要有2种方式

1、使用intent的putExtra方法

第一个Activity

    Intent intent = new Intent();
    intent.putExtra("value1",value);
    intent.setClass(this,TargetActivity.class);
    startActivity(intent);

其中value变量可以是基本类型数据,甚至是实例对象,当然首先前提要实现Serializable或者Parcelable。

PS:如果传递的对象包含有内部类,也要一并序列化,否则数据是传不过去的。

第二个Activity

     Intent intent = getIntent();
     String value = intent.getStringExtra("value1");

只需要调用响应类型的getXXXXExtra方法就可以了

2、使用Bundle传递

第一个Activity

                    Intent intent = new Intent();
                    Bundle bundle = new Bundle();
                    bundle.putString("avatar", user.getAvatar());
                    bundle.putString("username",user.getUsername());
                    bundle.putString("name",user.getName());
                    bundle.putString("gender",user.getGender());
                    bundle.putString("email",user.getEmail());
                    bundle.putString("password",et_pass.getText().toString());
                    intent.putExtras(bundle);
                    intent.setClass(this, TargetActivity.class);
                    startActivity(intent);

这里的bundle直接调用响应类型的put方法了。同样的,取出数据时也要进行相似的操作。

第二个Activity

        Intent intent=getIntent();
        Bundle bundle=intent.getExtras();

        username.setText((String) bundle.get("username"));
        name.setText((String)bundle.get("name"));
        gender.setText((String)bundle.get("gender"));
        email.setText((String)bundle.get("email"));
        userName=(String) bundle.get("username");
        password =(String)bundle.get("password");

这里我偷了个懒直接取出来设置到文本框啦QwQ

3、关于这两种方法的区别

其实。。。。。实际上是一样的。让我们看下Intent的方法

public Intent putExtra(String name, boolean value) {
    if (mExtras == null) { 
        mExtras = new Bundle(); 
    } 
    mExtras.putBoolean(name, value); 
    return this; 
} 

讲道理,其实就是封装了一下吧。。。。。。

而使用Bundle传值的话最后调用的方法:Intent.putExtras(Bundle extras):

public Intent putExtras(Bundle extras) {
    if (mExtras == null) { 
        mExtras = new Bundle(); 
    } 
    mExtras.putAll(extras); 
    return this; 
} 

。。。。。。。。好吧,随意吧。这就是为什么第一个方法里的代码我没有用实际项目里的代码的原因=。=

转载于:https://my.oschina.net/u/3508669/blog/1031513

分享到:
评论

相关推荐

    安卓Android源码——Bundle.rar

    Bundle类是Android SDK中的一个类,它继承自Parcelable接口,主要用来在Activity之间传递数据。由于Android不支持对象的直接传递,Bundle提供了将数据序列化的方式,使得复杂的数据结构能够在不同组件之间安全地传输...

    安卓Android源码——Intent1.rar

    通过研究这个“安卓Android源码——Intent1.rar”中的内容,开发者可以学习到如何创建 Intent,如何设置 Intent 的各个属性,以及如何利用 Intent Filter 实现组件间的交互。这将有助于提升对 Android 应用程序架构...

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

    在"猴子摘桃"项目中,我们可能通过Intent将数据(如桃子的数量)从一个Activity传递到另一个Activity。 2. ** Extras**: Intent对象有一个putExtra()方法,用于添加额外的数据,比如字符串、整数等。在启动新...

    安卓Android源码——Intent_ComponentSample.rar

    综上所述,"Intent_ComponentSample" 示例着重展示了Intent在Android组件间通信的角色,以及如何通过Intent启动和控制Activity和服务。通过学习这个示例,开发者可以更好地理解Android应用程序的内部工作原理,从而...

    安卓Android源码——Intent_TabHostSample.rar

    - 理解Intent的创建和传递机制,如何在不同Activity间进行数据交换。 - 掌握TabHost的使用,创建具有多Tab的用户界面。 - 学习如何结合Intent和TabHost,实现动态切换界面内容。 通过这个源码示例,开发者能够...

    Android四大核心——Intent

    在Android操作系统中,Intent是四大核心组件(Activity、Service、BroadcastReceiver、ContentProvider)之间通信的重要桥梁,也是应用程序中启动活动、启动服务、传递数据的关键工具。本篇将深入探讨Intent的基本...

    Intent——把两个Activity关联起来!

    总结来说,Intent是Android应用程序间通信的关键工具,它不仅实现了Activity之间的跳转,还负责传递数据,确保了组件间的协同工作。理解并熟练运用Intent,将有助于提升Android应用的开发效率和用户体验。

    安卓Android源码——Bundle1.rar

    Bundle类在Android中扮演着数据传递的重要角色,它允许你在Activity、Fragment或者Intent之间安全地存储和恢复Parcelable或Serializable对象。 Bundle类主要知识点: 1. **Parcelable接口**:Bundle中的数据通常是...

    android intent 页面跳转

    本文将深入探讨“Android Intent”在页面跳转和数据传递中的应用,结合“Chapter06_Intent_01”示例进行详细解析。 一、Intent的基本概念 Intent是一个消息对象,它表达了应用的意图,告诉系统想要执行的操作。...

    【Android开发】不同Activity之间的数据回传实例(二)星座测算游戏

    在游戏场景中,如果涉及到Fragment,数据传递可以类似Activity间,通过Intent或者直接调用Fragment的方法传递。 8. **生命周期管理**: 考虑到Activity的生命周期,当Activity被销毁或暂停时,存储在Intent中的...

    android各组件详解- Intent.

    标题与描述均指向了“Android各组件详解——Intent”,这一主题深入探讨了Android开发中至关重要的Intent组件。本文将从多个角度解析Intent的功能、应用场景及其内部结构,为开发者提供全面的理解。 ### Intent概述...

    Android学习笔记(十二)——使用意图传递数据的几种方式

    在Android应用开发中,意图(Intent)是连接各个组件(如Activity、Service、BroadcastReceiver)的重要桥梁,也是数据传递的一种常见手段。本篇笔记将详细探讨Android中使用意图传递数据的几种方式,帮助开发者深入...

    Activity间传值

    在Android应用开发中,Activity是用户界面的基本单元,它们之间进行数据传递是非常常见的操作。"Activity间传值"指的是在不同的Activity实例之间共享数据。在这个场景中,我们有Activity1、Activity2和Activity3,...

    Activity之间的数据传输的示例(实现根据身高计算标准体重)

    在我们的示例中,我们需要将用户的身高数据从一个Activity传递到另一个Activity,以便计算标准体重。 1. **创建Intent**: 在源Activity中,我们可以通过`Intent intent = new Intent(this, DestinationActivity....

    Android学习笔记(七):多个Activity和Intent.doc

    本篇笔记将详细阐述如何处理多个Activity以及如何使用Intent进行数据传递。 首先,当我们需要在应用中使用多个Activity时,每个Activity都需要在`AndroidManifest.xml`文件中注册。注册不仅让系统知道你的应用包含...

    android Intent用法

    在接收端的Activity中可以通过以下代码获取传递的数据: ```java Bundle bundle = getIntent().getExtras(); String name = bundle.getString("name"); ``` #### 3. 使用 `setResult` 进行结果回调 ```java ...

    Android Studio —— 界面切换且传参

    在Android应用开发中,界面间的切换是不可或缺的一部分,Android Studio作为官方推荐的集成开发环境(IDE),提供了强大的支持。本文将深入探讨如何在Android Studio中实现界面切换并传递参数,帮助开发者更好地理解...

    安卓Android源码——StartActivityToSecondActivitySimple.rar

    这里的Intent对象是Android中用来在组件间传递数据的重要工具。在这个例子中,我们用它来创建一个从FirstActivity到SecondActivity的启动意图。`startActivity()`方法会将Intent发送出去,从而启动SecondActivity。 ...

    安卓Android源码——MyIntentForresult.rar

    - Intent 是 Android 应用中的一种“意图”或请求,用于启动新的 Activity 或服务,或者在现有组件间传递数据。 - Intent 可以分为显式 Intent 和隐式 Intent。显式 Intent 指定要启动组件的完全限定类名,而隐式 ...

    Android新手入门1——项目源码

    本篇文章将深入解析“Android新手入门1——项目源码”所涵盖的知识点,包括Android项目的创建、活动(Activity)的创建与管理、按钮的使用、页面跳转、页面间的消息传递以及Menu菜单的前端实现。 首先,Android项目...

Global site tag (gtag.js) - Google Analytics