Android中的Bundle类:活动间的数据传递
阅读: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活动间数据传递中的重要作用。