Android中的Bundle类:活动间的数据传递

发布:2024-11-05 16:25 阅读:25 点赞:0

一、使用Bundle传递数据

在Android开发中,Bundle类是一个非常重要的工具,它允许我们在不同的活动(Activity)之间传递数据。Bundle类继承自BaseBundle类,并位于android.os包中。通过创建Bundle对象,我们可以保存数据并在应用的不同部分之间共享。这种数据共享是基于键值对的形式,可以在活动之间传递原始数据类型,如整数(int)、字符串(String)、布尔值(boolean)以及ArrayList等。

(一)在第一个活动中发送数据

// FirstActivity.java
public void callActivity2(View view) {
    // 获取用户输入的邮箱和密码
    String stEmail = email.getText().toString();
    String stPwd = password.getText().toString();
    
    // 创建一个启动新活动的Intent对象
    Intent objIntent = new Intent(MainActivity.this, Activity2.class);

    // 创建Bundle对象并放入数据
    Bundle bundle = new Bundle();
    bundle.putString("email", stEmail); // 使用键"email"存储邮箱
    bundle.putString("pwd", stPwd);     // 使用键"pwd"存储密码
    
    // 将Bundle对象附加到Intent上
    objIntent.putExtras(bundle);

    // 启动新活动
    startActivity(objIntent);
}

(二)在第二个活动中接收数据

// Activity2.java
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_2);

    // 初始化UI组件
    txt1 = (TextView) findViewById(R.id.textView3);
    txt2 = (TextView) findViewById(R.id.textView4);

    // 从Intent中获取Bundle对象
    Bundle bundle = getIntent().getExtras();
    
    // 使用键来获取存储的数据
    String data1 = bundle.getString("email"); // 获取邮箱
    String data2 = bundle.getString("pwd");   // 获取密码

    // 显示获取的数据
    txt1.setText(data1);
    txt2.setText(data2);

    // 显示登录成功的提示
    Toast.makeText(getBaseContext(), "登录成功", Toast.LENGTH_SHORT).show();
}

二、XML布局文件

(一)MainActivity的XML布局

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/toolbar"
    android:orientation="vertical"
    android:background="#11AFAF"
    app:layout_constraintTop_toTopOf="parent">


    <TextView
        android:id="@+id/textView9"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="TextView" />


    <EditText
        android:id="@+id/editTextTextEmailAddress3"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:inputType="textEmailAddress" />


    <EditText
        android:id="@+id/editTextNumberPassword2"
        android:layout_width="match_parent"
        android:layout_height="wrap方Content"
        android:ems="10"
        android:inputType="numberPassword" />


    <Button
        android:id="@+id/button2"
        android:layout_width="186dp"
        android:layout_height="wrap_content"
        android:onClick="callActivity2"
        android:text="Login" />


</LinearLayout>

(二)Activity2的XML布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".Activity2"
    android:background="#345F">

    <TextView
        android:id="@+id/textView3"
        android:layout_width="291dp"
        android:layout_height="83dp"
        android:text="TextView"
        tools:ignore="MissingConstraints" />

    <TextView
        android:id="@+id/textView4"
        android:layout_width="295dp"
        android:layout_height="87dp"
        android:text="TextView"
        android:layout_marginTop="48dp"
        tools:ignore="MissingConstraints" />


</RelativeLayout>

三、输出结果

当用户在MainActivity中输入邮箱和密码并点击登录按钮后,应用会启动Activity2并在其中显示输入的邮箱和密码,同时弹出一个简短的提示信息告知用户登录成功。

通过上述步骤,我们可以清楚地看到Bundle类在Android活动间数据传递中的重要作用。

Login

Output