Dalam materi sebelumnya, selalu digunakan satu activity (satu form). Tentu saja sebuah applikasi sering membutuhkan multi acitivity. Sebagai contoh, misalnya kita akan membuat sebuah aplikasi matematika sederhana. Applikasi ini menyediakan menu yang berisi pilihan untuk menghitung luas segiempat dan luas segitiga.
Rancangan layarnya sebagai berikut.
Pertama kita akan membuat form utama terlebih dulu yang memiliki dua menu. Berikut deklarasi XML form main.
Dengan hasil sebagai berikut:
Selanjutnya kita akan membuat form kedua untuk menghitung luas segitiga. Klik layout di package Explorer lalu klik kanan-->> New atau File -->> New -->> Other (Ctrln-N). Pilih Android XML File.
Beri nama file segitiga
dengan root TableLayout
Buat form untuk menerima input dari user dan menampilkan keluaran
Deklarasi XML-nya adalah sebagai berikut (perhatikan penggunaan atribut android:numeric=integer|decimal agar teks hanya menerima nilai integer atau desimal):
Selanjutnya, kita akan membuat program untuk menghitung luas segitiga. Klik package, lalu klik kanan -->> New -->> Class
Beri nama Segitiga, dan merupakan turunan dari android.app.Activity
Set layout yang digunakan (R.layout.segitiga) dan implementasi saat button diklik.
Selanjutnya adalah menghubungkan menu utama dengan modul menghitung segitiga ini.
Intent dapat digunakan untuk memanggil activiy lain. Intent adalah request dari satu activity ke activity atau intent listener lain. Agar dapat dipanggil, kita harus menambahkan intent ke AndroidManifest.xml.
Intent dapat digunakan untuk memanggil activiy lain. Intent adalah request dari satu activity ke activity atau intent listener lain. Intent juga digunakan untuk notifikasi event misalnya SD card dimasukkan, SMS masuk, activiy dijalankan dst
Penting: agar activity hitung luas segitiga dapat dipanggil, kita harus menambahkan activity ini ke AndroidManifest.xml.
Sekarang kembali ke Main.Java, tambahkan pada method segitigaClick intent berisi permintaan untuk menjalankan activity segitiga dan jalankan dengan startActivity.
Pada contoh diatas digunakan startActivity untuk memanggil sub activity. Tidak ada notifikasi apakah subactivity sudah selesai atau belum dan terkadang kita juga membutuhkan data dari subactivity. Untuk hal tersebut, dapat digunakan startActivityForResult.
Perlu penjelasan yang agak panjang untuk mencoba startActivityForResult. Buatlah sebuah project baru. Pada form Main, tambah satu button yang jika diklik akan memanggil sub activity dan mengirimkan data.
Kemudian kita buat form sub activity-nya. Klik kanan di layout -->> New -->> Other -->> Android XML File, beri nama sub.xml
Form-nya seperti berikut, TextView akan menampilkan kiriman data dari form utama,
Potongan XML-nya adalah sebagai berikut:
Sekarang kita membuat Sub.java. Klik kanan dibagian package (misal edu.upi.cs) -->> New -->> Class. Beri nama Sub, dan isi superclass dengan android.app.Activity.
Jangan lupa ganti parameter setContentView dengan .sub.
onStart adalah method yang dipanggil setelah onCreate dan activity telah ditampilkan. Isi method ini dengan menampilkan isi data yang dikirimkan program utama.
Sekarang kita kembali ke main.java, gunakan method putExtra untuk menambahkan data ke intent. Pada startActivityForResult terdapat parameter angka 99 (silahkan ganti dengan angka atau konstanta apapun). Ini karena satu activity bisa mengirimkan banyak intent dan diperlukan cara untuk membedakan antara satu intent dengan intent yang lain.
Method onActivityResult akan dipanggil saat activity yang dipanggil telah selesai.
Jangan lupa mendaftarkan sub activity di AndroidManifest.xml
Test program, maka subactivty akan menampilkan data yang dikirim dari form utama.
Catatan: Jika terjadi force close, ada kemungkinan activity belum ditambahkan di AndroidManifest.xml
Pada program diatas, anda telah berhasil mengirimkan data ke sub activity. Sekarang kita akan membuat sebaliknya, data dari sub activy akan dikirim ke form utama. Kita akan memodifikasi program diatas sbb:
Pada main.xml, tambahkan TextView untuk menampilkan hasil dari sub activity, beri id tvHasilSub.
Lalu pada main.java, lengkapi method onActivityResult. Pada method ini, diterima dan diproses hasil dari sub activity.
Kemudian untuk subactivitynya sendiri, tambahkan Button yang diklik saat pengguna telah selesai dengan subactivity. Edit sub.xml sebagai berikut
Implementasikan method saat Button selesai diklik di sub.java
Jalankan program, setelah subactiviy ditutup, maka di program utama akan muncul kiriman data dari sub activity
1 comment
jadi ini sebenernya bikin apliaksi penghitung luas segitiga dan segi empat, atau membuat sub activity?
Posting Komentar
Silahkan berikan komentar anda