Cách đơn giản nhất để truyền nhiều giá trị riêng lẻ (String, int, boolean...) từ Activity này sang Activity khác là sử dụng Bundle kèm theo Intent.putExtras().
Các bước thực hiện
Bước 1: Tạo dự án mới
Tạo dự án Android Studio với package com.example.myapplication.
Bước 2: Giao diện màn hình chính (res/layout/activity_main.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="16dp"
android:orientation="vertical"
tools:context=".MainActivity">
<EditText
android:id="@+id/etName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:hint="Tên"
android:inputType="text" />
<EditText
android:id="@+id/etAge"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:hint="Tuổi"
android:inputType="number" />
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="16dp"
android:text="Tiếp theo" />
</LinearLayout>
Bước 3: Gửi dữ liệu (src/MainActivity.java)
package com.example.myapplication;
import android.content.Intent;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends AppCompatActivity {
private EditText etName, etAge;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
etName = findViewById(R.id.etName);
etAge = findViewById(R.id.etAge);
Button button = findViewById(R.id.button);
button.setOnClickListener(v -> {
String name = etName.getText().toString().trim();
String age = etAge.getText().toString().trim();
Bundle bundle = new Bundle();
bundle.putString("name", name);
bundle.putString("age", age);
// Có thể thêm nhiều kiểu khác: putInt, putBoolean, putParcelable...
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
intent.putExtras(bundle);
startActivity(intent);
});
}
}
Bước 4: Giao diện màn hình nhận (res/layout/activity_second.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="16dp"
android:orientation="vertical"
tools:context=".SecondActivity">
<TextView
android:id="@+id/tvName"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/tvAge"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
Bước 5: Nhận dữ liệu (src/SecondActivity.java)
package com.example.myapplication;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import android.widget.TextView;
public class SecondActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
Bundle bundle = getIntent().getExtras();
if (bundle != null) {
String name = bundle.getString("name");
String age = bundle.getString("age");
TextView tvName = findViewById(R.id.tvName);
TextView tvAge = findViewById(R.id.tvAge);
tvName.setText("Tên: " + name);
tvAge.setText("Tuổi: " + age);
}
}
}
Bước 6: AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
package="com.example.myapplication">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".SecondActivity" />
</application>
</manifest>
Mở rộng: Các phương thức Bundle thường dùng
| Phương thức | Mô tả |
|---|---|
putString(key, value) | Lưu chuỗi |
putInt(key, value) | Lưu số nguyên |
putBoolean(key, value) | Lưu giá trị logic |
putDouble(key, value) | Lưu số thực |
putParcelable(key, value) | Lưu đối tượng Parcelable |
putSerializable(key, value) | Lưu đối tượng Serializable |
putStringArray(key, value) | Lưu mảng chuỗi |
Tương ứng mỗi putX có getX để lấy dữ liệu ngược lại.