Android Bundle
Teori
Untuk berkomunikasi antar Activity, Android menggunakan Bundle. Bundle dapat dikirimkan melalui Intent. Pengiriman data melalui Bundle, dapat digunakan salah satu cara berikut:
Menggunakan Bundle dari Intent
Intent intent = new Intent(this, Example.class); Bundle extras = intent.getExtras(); extras.putString(key, value);
Menginstansiasi Bundle
Intent intent = new Intent(this, Example.class); Bundle bundle = new Bundle(); bundle.extras.putString(key, value); intent.putExtras(bundle);
Menggunakan method
putExtra()
pada Intent.Intent intent = new Intent(this, Example.class); intent.putExtra(key, value);
Pada Activity yang dikirimkan data, diperlukan proses pembacaan data. Untuk pembacaan data, disesuaikan dengan tipe data yang dikirimkan. Di bawah ini merupakan contoh pembacaan data dengan tipe data String.
Bundle bundle = getIntent().getExtras();
String value = bundle.getString(key);
atau dapat disingkat
String value = getIntent().getExtras().getString(key);
Praktikum
Pada project Intent bukalah file
BundleActivity.java
kemudian tambahkan konstanta sebagai berikut.public static final String USERNAME_KEY = "username"; public static final String NAME_KEY = "name"; public static final String AGE_KEY = "age";
Tips: anda dapat menggunakan snippet
psfs
untuk mempermudah membuat konstanta.Deklarasikan atribut untuk digunakan menghubungkan
EditText
dengan layout.private EditText usernameInput; private EditText nameInput; private EditText ageInput;
Bind atribut dengan view pada layout, lakukan hal ini pada method
onCreate()
usernameInput = findViewById(R.id.input_username);
Lengkapi langkah bind untuk atribut yang lain berdasarkan informasi berikut.
Atribut | Id |
---|---|
nameInput |
R.id.input_name |
ageInput |
R.id.input_age |
Bukalah file
activity_bundle.xml
kemudian perhatikan pada bagian tombol SubmitTambahkan atribut
android:onClick="handleSubmit"
, kemudian generate handler dengan shortcutAlt + Enter
- Tambahkan logika untuk mengirimkan data ke Activity lain dengan menggunakan Intent.
Pada method
handleSubmit(View view)
tangkap nilai dari masing-masing EditText.String username = usernameInput.getText().toString(); String name = nameInput.getText().toString(); int age = Integer.parseInt(ageInput.getText().toString());
Catatan: Untuk
age
ditambahkan proses konversi dariString
keint
.Instansiasi
Intent
dan atur target Activity keProfileBundleActivity
Intent intent = new Intent(this, ProfileBundleActivity.class);
Untuk mengirimkan data ke Activity lain, dapat digunakan method
putExtra()
pada Intent. Method ini membutuhkan dua parameter, yaitu key dan value. Untuk memudahkan pada umumnya untuk key digunakan konstanta. Konstanta yang dibutuhkan telah dibuat pada langkah awal. Silahkan lengkapi implementasi berdasarkan pada tabel berikut.
Key | Value |
---|---|
USERNAME_KEY |
username |
NAME_KEY |
name |
AGE_KEY |
age |
Sebagai langkah terakhir, panggil method
startActivity()
berisi dataIntent
yang telah dikonfigurasi.// Implementasi kode sebelumnya // ... startActivity(intent);
Pada tahapan ini, anda telah berhasil untuk mengirimkan data ke Activity lain.
Sebagai langkah selanjutnya, dibutuhkan proses untuk membaca data yang telah dikirimkan. Bukalah dan amati file
ProfileBundleActivity.java
sertaactivity_profile_bundle.xml
.Tambahkan atribut yang berkaitan dengan layout.
private TextView usernameText; private TextView nameText; private TextView ageText;
Bind atribut dengan id pada layout sesuai informasi tabel berikut.
Atribut | Id |
---|---|
usernameText |
R.id.text_username |
nameText |
R.id.text_name |
ageText |
R.id.text_age |
Untuk mendapatkan akses data yang telah dikirimkan dapat menggunakan method
getIntent().getExtras()
. Tambahkan kode berikut setelah proses bind.Bundle extras = getIntent().getExtras();
Untuk menghindari kemungkinan tidak didapatkan nilai data, lakukan proses pengecekan nilai bukan
null
.if (extras != null) { // TODO: tampilkan nilai yang didapatkan ke tampilan }
Pertanyaan
- Lengkapi
ProfileBundleActivity
sehingga bisa menampilkan informasi data profile yang telah diterima.