Android零基础入门第81节:Activity数据传递

本文详细介绍了在Android开发中如何使用Intent和Bundle在Activity之间传递数据,包括putExtra()、getXxxExtra()、putExtras()和getExtras()等方法的使用,以及通过示例演示了如何创建简单应用来传递用户名、密码等信息。
摘要由CSDN通过智能技术生成

   在Android开发中,经常要在Activity之间传递数据。前面也学习了Activity和Intent相关基础,接下来一起来学习Activity的数据传递。

一、简介

    通过前面的学习知道,Intent可以用来开启Activity,同样它也可以用来在Activity之间传递数据。Intent提供了多个重载的方法来携带额外的数据,如下所示。

  • putExtra(String name,  xxx value):向 Intent 中按 key-value 对的形式存入数据。

  • getXxxExtra(String name):从Intent中按key取出指定类型的数据。 

  • putExtras(Bundle data):向Intent中放入需要携带的数据包。

  • Bundle getExtras():取出Intent中所携带的数据包。

    使用Intent传递数据只需调用putExtra()方法将想要存储的数据存在Intent中即可。当启动了另一个Activity后,再把这些数据从Intent中取出即可。其核心示例代码如下:

// 从MainActivity传递数据到SecondActivity

Intent intent=new Intent(MainActivity.this,SecondActivity.class);

String name="admin ";

intent.putExtra("extra_data_name",name);

startActivity(intent);



// 取出MainActivity传递过来的数据

Intent intent=getIntent();

String name=intent.getStringExtra("extra_data_name");

    还有另外一种方式,就是传递Bundle对象。Bundle对象包含了多个方法来存入数据和取出数据,如下所示。

  • putXxx(String key , Xxx data):向 Bundle 中放入 int、long 等各种类型的数据。

  • putSerializable(String key,Serializable data):向 Bundle 中放入一个可序列化的对象。

  • getXxx(String key):从Bundle中取出int、long等各种类型的数据。

  • getSerializable(String key, Serializable data):从 Bundle 中取出一个可序列化的对象。

    使用Bundle对象传递数据的核心代码如下:

// 从MainActivity传递数据到SecondActivity

Bundle bundle=new Bundle();

bundle.putString("name","Linda ");

bundle.putInt("age",20);

Intent intent=new Intent(MainActivity.this,SecondActivity.class);

intent.putExtras(bundle);

startActivity(intent);



// 取出MainActivity传递过来的数据

Intent intent=getIntent();

Bundle bundle=intent.getExtras();

String stuName=bundle.getString("name");

int stuAge=bundle.getString("age");

    在上述代码中,在接收Bundle对象封装的数据时,需要先创建对应的Bundle对象,然后再根据存入的key值取出value。其实用Intent传递数据以及对象时,它的内部也是调用了Bundle对象相应的put()方法,也就是说Intent内部也是用Bundle来实现数据传递的,只是封装了一层而已。

二、示例

    接下来通过一个示例来学习两个Activity之间如何通过Bundle交换数据。

    创建一个示例程序,非常简单,一共有两个界面,其中第一个界面有用户名、密码和性别等信息,然后有一个注册按钮,第二个界面包含多个文本框。让用户将信息填写完整后点击注册,将所有信息传入到第二个页面去模拟注册,这里就简单显示出来即可。

    第一个Activity对应的布局文件(activity_main)的代码如下所示:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <LinearLayout
        android:id="@+id/regist_username_ll"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:layout_marginTop="22dp"
        android:orientation="horizontal" >
        <TextView
            android:layout_width="80dp"
            android:layout_height="wrap_content"
            android:gravity="right"
            android:paddingRight="5dp"
            android:text="用户名 :" />
        <EditText
            android:id="@+id/name_et"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="请输入您的用户名"
            android:textSize="14dp" />
    </LinearLayout>
    <LinearLayout
        android:id="@+id/regist_password_ll"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/regist_username_ll"
        android:layout_centerHorizontal="true"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:layout_marginTop="5dp"
        android:orientation="horizontal" >
        <TextView
            android:layout_width="80dp"
            android:layout_height="wrap_content"
            android:gravity="right"
            android:paddingRight="5dp"
            android:text=
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值