5.1: Drawable, Gaya, dan Tema

.1 Buat proyek “Scorekeeper”
Mulai Android Studio dan buat proyek Android Studio baru.
Beri nama proyek Anda “Scorekeeper”
Terima default untuk Company Domain dan Project location.
Terima SDK Minimum default.
Pilih template Empty Activity. 1 Terima nama default untuk aktivitas, pastikan Generate Layout File dicentang dan klik Finish.

1.2 Buat layout untuk aktivitas utama
Definisikan tampilan root:
Buka file layout untuk aktivitas utama.
Hapus TextView yang berisi “Hello World.”
Ubah tampilan root menjadi LinearLayout dan tambahkan atribut berikut (tanpa menghapus atribut yang sudah ada):
Atribut Nilai
android:orientation “vertical”
Definisikan kontainer skor:
Di dalam LinearLayout, tambahkan dua grup tampilan RelativeLayout (satu untuk menampung skor untuk setiap tim) dengan atribut berikut:
Atribut Nilai
android:layout_width “match_parent”
android:layout_height “0dp”
android:layout_weight “1”
Anda mungkin tidak menyangka saat melihat atribut layout_height disetel ke 0dp di tampilan ini. Ini karena kita menggunakan atribut “layout_weight” untuk menentukan seberapa luas ruang yang diperlukan tampilan ini di layout induk. Lihat Dokumentasi LinearLayout untuk informasi selengkapnya.
Tambahkan tampilan ke UI
Tambahkan dua tampilan ImageButton (satu untuk meningkatkan skor dan satu untuk menurunkan skor) dan sebuah TextView untuk menampilkan skor di antara tombol ke setiap RelativeLayout.
Tambahkan atribut android:id ke TextView skor dan semua ImageButton.
Tambahkan satu lagi TextView ke setiap RelativeLayout di atas skor untuk menunjukkan Nama Tim. Diagram Kotak Tampilan Scorekeeper
Tambahkan aset vektor
Pilih File > New > Vector Asset untuk membuka Vector Asset Studio.
Klik ikon untuk mengubahnya menjadi daftar file ikon material. Pilih kategori Content.
Pilih ikon plus dan klik OK.
Ubah nama file sumber daya “ic_plus” dan centang kotak Override di sebelah opsi ukuran.
Ubah ukuran ikon ke 40dp x 40dp.
Klik Next, lalu Finish.
Ulangi proses ini untuk menambahkan ikon “minus” dan beri nama file “ic_minus”.
Tambahkan atribut ke tampilan Anda
Ubah tampilan teks skor agar terbaca “0” dan tampilan teks tim agar terbaca “Team 1” dan “Team 2″.
Tambahkan atribut berikut ini ke tombol gambar kiri Anda:
android:src=”@drawable/ic_minus”
android:contentDescription=”Minus Button”
Tambahkan atribut berikut ini ke tombol gambar kanan Anda:
android:src=”@drawable/ic_plus”
android:contentDescription=”Plus Button”
Ekstrak semua sumber daya string Anda. Proses ini membuang semua string Anda dari kode Java dan menempatkannya ke dalam file string.xml. Ini memungkinkan aplikasi Anda lebih mudah dilokalkan ke bahasa yang berbeda. Untuk mempelajari cara mengekstrak sumber daya string, lihat bagian Mengekstrak Sumber Daya di Apendiks. Aplikasi Scorekeeper dalam proses pengembangan
Kode Solusi:
Catatan: Kode Anda mungkin sedikit berbeda karena terdapat beberapa cara untuk membuat layout yang sama.

1.3 Inisialisasi TextView Anda dan variabel hitungan skor
Untuk mencatat skor, Anda memerlukan dua hal:
Variabel integer agar Anda bisa melacak skor.
Referensi ke TextView skor Anda di MainActivity sehingga Anda bisa memperbarui skor.
Dalam metode onCreate() MainActivity, temukan TextView skor Anda menurut id dan tetapkan TextView ke variabel anggota.
Buat dua variabel anggota integer, yang menunjukkan skor setiap tim, dan inisialisasi ke 0.

1.4 Implementasikan fungsionalitas onClick untuk tombol Anda.
Di MainActivity Anda, implementasi dua metode onClick: increaseScore() dan decreaseScore().
Catatan: semua metode onClick memiliki tanda tangan yang sama – metode ini mengembalikan void dan mengambil View sebagai argumen.
Tombol kiri akan mengurangi TextView skor, sedangkan tombol kanan akan menambahnya.
Kode Solusi:
Catatan: Anda juga harus menambahkan atribut android:onClick ke setiap tombol di file activity_main.xml. Anda bisa mengidentifikasi tombol mana yang diklik dengan memanggil view.getId() di metode onClick.

Tugas 2: Membuat sumber daya Drawable
Anda sekarang sudah memiliki aplikasi Scorekeeper yang berfungsi! Akan tetapi, layout-nya tidak menarik dan tidak menyampaikan fungsi tombol. Untuk memperjelasnya, latar belakang abu-abu standar tombol bisa diubah.
Di Android, grafik sering kali ditangani oleh sebuah sumber daya yang disebut Drawable. Di latihan berikut, Anda akan mempelajari cara membuat tipe drawable tertentu yang disebut ShapeDrawable dan menerapkannya ke tombol Anda sebagai latar belakang.
Untuk informasi selengkapnya tentang Drawable, lihat Dokumentasi Sumber Daya Drawable.

2.1 Buat Drawable Bentuk
ShapeDrawable adalah bentuk geometris primitif yang didefinisikan di file xml oleh sejumlah atribut, yang mencakup warna, bentuk, padding, dan lainnya. Ini mendefinisikan grafik vektor, yang bisa diskalakan naik dan turun tanpa kehilangan definisi.
Klik kanan folder drawable di direktori sumber daya.
Pilih New > Drawable resource file.
Beri nama file “button_background” dan klik OK.
Buang semua kode, kecuali:

Lesson 4: User Interaction

1.1 Membuat layout utama dan metode showText
Anda akan menambahkan Tombol, dan mengubah elemen TextView menjadi elemen EditText sehingga pengguna bisa memasukkan teks. Layout aplikasi akan tampak seperti gambar berikut.
1. Buat proyek baru yang bernama Keyboard Samples, dan pilih template Empty Activity.
2. Buka file layout activity_main.xml untuk mengedit kode XML.
3. Tambahkan Tombol di atas elemen TextView yang sudah ada dengan atribut berikut:
Atribut Tombol Nilai Baru
android:id “@+id/button_main”
android:layout_width “wrap_content”
android:layout_height “wrap_content”
android:layout_alignParentBottom “true”
android:layout_alignParentRight “true”
android:onClick “showText”
android:text “Show”
4. Ekstrak sumber daya string untuk nilai atribut android:text untuk membuat dan memasukkannya di strings.xml: Letakkan kursor pada Show, tekan Alt-Enter (Option-Enter di Mac), dan pilih Extract string resource. Lalu ubah name sumber daya untuk nilai string ke show.
Anda mengekstrak sumber daya string karena menjadikan proyek aplikasi lebih fleksibel untuk mengubah string. Penetapan sumber daya string disimpan di file strings.xml (pada app > res > values). Anda bisa mengedit file ini untuk mengubah penetapan string sehingga aplikasi bisa dilokalkan dengan bahasa berbeda. Misalnya, nilai “Show” untuk sumber daya yang bernama showbisa diubah ke “Montrer” untuk aplikasi dalam versi bahasa Prancis.
5. Ubah elemen TextView yang sudah ada seperti berikut:
a. Hapus atribut android:text yang menetapkan “Hello World!”.
b. Ubah tag TextView menjadi tag EditText dan pastikan tag diakhiri dengan />.
c. Tambahkan atau ubah atribut berikut:
Atribut EditText Nilai Lama TextView Nilai Baru EditText
android:id “@+id/editText_main”
android:layout_width “wrap_content” “match_parent”
android:layout_height “wrap_content” “wrap_content”
android:layout_alignParentBottom “true”
android:layout_toLeftOf “@id/button_main”
android:hint “Enter a message”
d. Anda telah mempelajari tentang atribut android:layout_toLeftOf dan android:layout_alignParentBottom di pelajaran sebelumnya. Atribut yang terkait layout ini berfungsi dengan grup tampilan RelativeLayout untuk memosisikan tampilan turunan relatif terhadap yang lain atau terhadap induk. Atribut android:hint menyetel teks agar tampil dalam bidang yang menyediakan petunjuk bagi pengguna untuk menyediakan masukan, misalnya “Enter Enter a message”
6. Ekstrak sumber daya string untuk nilai atribut android:hint “Enter a message” ke nama sumber daya enter. File layout activity_main.xml sekarang harus terlihat seperti ini:
7. Buka MainActivity.java dan masukkan metode showText berikut, yang mengambil informasi yang dimasukkan ke dalam elemen EditText dan menampilkannya di dalam pesan toast
8. Buka strings.xml (dalam app > res > values) dan edit nilai app_name ke “Keyboard Samples”(pastikan untuk menyertakan spasi antara “Keyboard” dan “Samples”).
9. Jalankan aplikasi dan periksa cara kerja keyboard.
Mengetuk tombol Show akan menampilkan pesan toast entri teks.
Untuk menutup keyboard di layar, ketuk panah yang mengarah ke bawah di baris bawah ikon.
Di layout keyboard standar, ikon centang dalam lingkaran hijau, ditampilkan di bawah, muncul di sudut kanan bawah keypad. Ini dikenal sebagai tombol Return (atau Enter) dan digunakan untuk memasukkan baris baru:
Dengan atribut default untuk elemen EditText, mengetuk tombol Return akan menambahkan baris teks baru. Di bagian berikutnya, Anda akan mengubah keyboard sehingga dapat mengubah huruf besar pada huruf pertama kalimat selagi Anda mengetik. Sebagai hasil menyetel atribut android:inputType, atribut default untuk tombol Return berubah untuk mengalihkan fokus dari elemen EditText dan menutup keyboard.
1.2 Setel keyboard untuk menjadikan huruf besar di awal kalimat
1. Tambahkan atribut android:inputType ke elemen EditText menggunakan nilai textCapSentencesuntuk menyetel keyboard menjadi huruf besar di awal kalimat, sehingga pengguna bisa otomatis memulai kalimat dengan huruf besar:
2. android:inputType=”textCapSentences”
3. Jalankan aplikasi Anda.
Huruf besar sekarang akan tampil pada keyboard di awal kalimat. Saat Anda mengetuk tombol Return di keyboard, keyboard ditutup dan entri teks Anda berakhir. Anda masih bisa mengetuk bidang entri teks untuk menambahkan lebih banyak teks atau mengedit teks. Ketuk Show untuk menampilkan teks di pesan toast.
Untuk detail tentang atribut android:inputType, lihat Menentukan Tipe Metode Masukan
1.3 Setel keyboard untuk menyembunyikan sandi saat memasukkannya
1. Ubah elemen EditText untuk menggunakan nilai textPassword untuk atribut android:inputType.
2. android:inputType=”textPassword”
3. Ubah android:hint menjadi “Enter your password”.
4. Jalankan aplikasi.
Karakter yang dimasukkan pengguna berubah menjadi titik-titik untuk menyembunyikan sandi yang dimasukkan. Untuk mendapatkan bantuan, lihat Bidang Teks.
Kode solusi:
Proyek Android: KeyboardSamples
Tugas 2. Mengubah tipe keyboard
Setiap bidang teks mengharapkan tipe masukan teks tertentu, seperti alamat email, nomor telepon, sandi, atau hanya teks biasa. Penting untuk menetapkan tipe masukan untuk setiap bidang teks di aplikasi Anda sehingga sistem akan menampilkan metode masukan virtual yang sesuai, seperti:
• Keyboard di layar standar untuk teks biasa
• Keyboard untuk alamat email yang menyertakan simbol “@” di lokasi penting
• Keypad ponsel untuk nomor telepon
2.1 Menggunakan keyboard email
Ubah elemen EditText aktivitas utama agar menampilkan keyboard email, bukan keyboard standar:
1. Pada elemen EditText di file layout activity_main.xml, ubah atribut android:inputType menjadi yang berikut:
2. android:inputType=”textEmailAddress”
3. Ubah atribut android:hint menjadi “Enter an email address”.
4. Ekstrak sumber daya string untuk nilai android:hint ke enter_email.
5. Jalankan aplikasi. Mengetuk bidang akan memunculkan keyboard email di layar dengan simbol “@” yang terletak di sebelah tombol spasi.
2.2 Menggunakan keypad ponsel
Ubah elemen EditText aktivitas utama agar menampilkan keypad ponsel, bukan keyboard standar:
1. Pada elemen EditText di file layout activity_main.xml, ubah atribut android:inputType menjadi yang berikut:
2. android:inputType=”phone”
3. Ubah atribut android:hint menjadi “Enter a phone number”.
4. Ekstrak sumber daya string untuk nilai android:hint ke enter_phone.
5. Jalankan aplikasi.
Mengetuk bidang kini akan memunculkan keypad ponsel di layar sebagai ganti keyboard standar.
Catatan: Saat menjalankan aplikasi di emulator, bidang masih akan menerima teks, bukan angka yang Anda ketikkan di keyboard komputer. Akan tetapi, saat dijalankan di perangkat, bidang hanya menerima angka keypad.
Tugas 3: Menambahkan kontrol masukan spinner untuk memilih label telepon
Kontrol masukan adalah komponen interaktif dalam antarmuka pengguna aplikasi Anda. Android menyediakan aneka ragam kontrol yang bisa Anda gunakan dalam UI, seperti tombol, bilah pencarian, kotak centang, tombol zoom, tombol toggle, spinner, dan masih banyak lagi. (Untuk informasi selengkapnya tentang kontrol masukan, lihat Kontrol Masukan.)
Spinner menyediakan cara cepat untuk memilih salah satu dari serangkaian nilai. Menyentuh spinner akan menampilkan daftar tarik-turun dengan semua nilai yang tersedia, yang bisa dipilih oleh pengguna. Jika hanya menyediakan dua atau tiga pilihan, Anda mungkin ingin menggunakan tombol radio untuk pilihan jika memiliki ruang di layout untuk tombol-tombol itu; akan tetapi, jika ada lebih dari tiga pilihan, spinner bekerja sangat baik, menggulir seperlunya untuk menampilkan item, dan hanya membutuhkan sedikit ruang di layout Anda.
Untuk informasi selengkapnya tentang spinner, lihat Spinner.
Untuk memberikan cara memilih label untuk nomor telepon (misalnya Rumah, Kantor, Seluler, dan Lainnya), Anda bisa menambahkan spinner ke layout agar tampil tepat di sebelah bidang nomor telepon.
3.1 Salin proyek KeyboardSamples dan ubah layout
Gunakan gambar berikut sebagai panduan untuk layout aktivitas utama:
Pada gambar di atas:
1. LinearLayout pertama dengan tampilan EditText, ikon spinner, dan tombol Show.
2. LinearLayout kedua dengan dua TextView.
Ikuti langkah-langkah berikut:
1. Salin folder proyek KeyboardSamples, ubah namanya menjadi PhoneNumberSpinner, dan optimalkan kode untuk mengisikan nama baru di seluruh proyek aplikasi. (Lihat Apendiks untuk melihat petunjuk tentang menyalin proyek.)
2. Setelah mengoptimalkan kode, ubah nilai ” di file strings.xml (di dalam app > res > values) menjadi Phone Number Spinner (berikut spasinya) sebagai nama aplikasi.
3. Bukan file layout activity_main.xml.
4. Kurung elemen EditText dan Button yang ada dari pelajaran sebelumnya di dalam LinearLayoutdengan orientasi horizontal, dan menempatkan elemen EditText di atas Button:
5. Buat perubahan berikut pada elemen EditText dan Button:
a. Hapus atribut berikut ini dari elemen EditText:
 android:layout_toLeftOf
 android:layout_alignParentBottom
b. Hapus atribut berikut dari elemen Button:
 android:layout_alignParentRight
 android:layout_alignParentBottom
c. Ubah tiga atribut elemen EditText lainnya seperti berikut:
Atribut EditText Nilai
android:layout_width “wrap_content”
android:inputType “phone”
android:hint “Enter phone number”
6. Tambahkan elemen Spinner di antara elemen EditText dan elemen Button:

7. Tambakan LinearLayout lagi di bawah LinearLayout yang baru saja Anda buat, dengan orientasi horizontal untuk mengurung dua elemen TextView secara bersisian — deskripsi teks dan bidang teks untuk menampilkan nomor telepon dan label telepon — dan meratakan LinearLayout ke bawah induknya (lihat gambar di atas):
8. Tambahkan elemen TextView berikut ke dalam LinearLayout:
Atribut TextView Nilai
android:id “@+id/title_phonelabel”
android:layout_width “wrap_content”
android:layout_height “wrap_content”
android:text “Phone Number: ”
Atribut TextView Nilai
android:id “@+id/text_phonelabel”
android:layout_width “wrap_content”
android:layout_height “wrap_content”
android:text “Nothing entered.”
10. Periksa layout Anda dengan mengeklik tab Preview di sebelah kanan jendela layout.Anda sekarang seharusnya melihat layar (lihat gambar di atas) yang menampilkan bidang entri telepon di atas sebelah kiri, spinner kerangka di sebelah bidang dan tombol Show di sebelah kanan. Di bawah, akan muncul text “Phone Number:” yang diikuti oleh “Nothing entered”.”
11. Ekstrak string Anda ke dalam sumber daya string: Letakkan kursor di string hard-code, tekan Alt-Enter (Option-Enter di Mac), dan pilih Extract string resources. Lalu edit nama Sumber Daya untuk nilai string. Ekstrak seperti berikut:
Elemen String Sumber daya string
EditText “Enter phone number” “@string/hint_phonenumber”
Button “Show” “@string/show_button”
TextView “Phone Number: ” “@string/phonenumber_label”
TextView “Nothing entered.” “@string/nothing_entered”
3.2 Tambahkan kode untuk mengaktifkan spinner dan listener-nya
Pilihan untuk spinner label telepon ini adalah string statis yang didefinisikan dengan baik (“Home”, “Work”, dsb), sehingga Anda bisa menggunakan larik teks yang didefinisikan di strings.xml untuk menyimpan nilai untuknya.
Untuk mengaktifkan spinner dan listener-nya, implementasikan antarmuka AdapterView.OnItemSelectedListener, yang juga memerlukan penambahan metode callback onItemSelected() dan onNothingSelected().
1. Buka strings.xml untuk mendefinisikan nilai yang bisa dipilih (Home, Work, Mobile, dan Other) untuk spinner sebagai larik string labels_array.

2. Untuk mendefinisikan callback pilihan untuk spinner, ubah kelas MainActivity Anda untuk mengimplementasikan antarmuka AdapterView.OnItemSelectedListener seperti yang ditampilkan:
3. public class MainActivity extends AppCompatActivity implements
4. AdapterView.OnItemSelectedListener {
Selagi Anda mengetik AdapterView. di pernyataan di atas, Android Studio otomatis mengimpor widget AdapterView. Alasan mengapa Anda memerlukan AdapterView adalah Anda memerlukan adaptor—khususnya ArrayAdapter—untuk menetapkan larik ke spinner. Sebuah adaptor*menyambungkan data Anda—dalam hal ini, larik item spinner—ke tampilan spinner. Anda akan mempelajari selengkapnya tentang pola penggunaan adaptor untuk menyambungkan data seperti ini di pelajaran lain. Baris ini harus muncul di blok pernyataan impor:
import android.widget.AdapterView;
Setelah mengetikkan OnItemSelectedListener di pernyataan di atas, tunggu beberapa detik sampai bola lampu merah muncul di batas kiri.
5. Klik bola lampu dan pilih Implement methods. Metode onItemSelected() dan onNothingSelected()yang diperlukan untuk OnItemSelectedListener, seharusnya sudah disorot, dan opsi “Insert @Override” harus dicentang. Klik OK.
Langkah ini otomatis menambahkan metode callback onItemSelected() dan onNothingSelected()kosong ke bawah kelas MainActivity. Kedua metode tersebut menggunakan parameter AdapterView. The is a Java type wildcard, enabling the method to be flexible enough to accept any type of AdapterViewsebagai argumen.
6. Buat instance objek spinner di metode onCreate() menggunakan elemen Spinner di layout (label_spinner), dan tetapkan listener-nya (spinner.setOnItemSelectedListener) di metode onCreate(). Tambahkan kode ke metode onCreate():
7. Lanjutkan mengedit metode onCreate(), tambahkan pernyataan yang membuat ArrayAdapter dengan larik string (labels_array) menggunakan layout spinner sederhana yang disediakan oleh Android untuk setiap item (layout.simple_spinner_item):
Layout simple_spinner_item yang digunakan di langkah ini, dan layout simple_spinner_dropdown_item yang digunakan di langkah berikutnya, adalah layout default yang ditetapkan sebelumnya yang disediakan oleh Android di kelas R.layout. Anda harus menggunakan layout ini kecuali Anda ingin mendefinisikan layout Anda sendiri untuk item di spinner dan tampilan spinner.
8. Tetapkan layout untuk pilihan spinner menjadi simple_spinner_dropdown_item, lalu terapkan adaptor ke spinner:
3.3 Tambahkan kode untuk merespons pilihan pengguna
Saat pengguna memilih item di spinner, objek Spinner menerima kejadian on-item-selected. Untuk menangani kejadian ini, Anda telah mengimplementasikan antarmuka AdapterView.OnItemSelectedListener di langkah sebelumnya, dengan menambahkan metode callback onItemSelected() dan onNothingSelected() kosong.
Di langkah ini, Anda terlebih dulu harus mendeklarasikan mSpinnerLabel sebagai string untuk menampung item yang dipilih. Kemudian Anda mengisikan kode untuk metode onItemSelected() untuk mengambil item yang dipilih di spinner, menggunakan getItemAtPosition(), dan menetapkan item ke mSpinnerLabel.
1. Deklarasikan string mSpinnerLabel di awal definisi kelas MainActivity:
2. Tambahkan kode ke metode callback onItemSelected() kosong, seperti yang ditampilkan di bawah ini, untuk mengambil item yang dipilih pengguna menggunakan getItemAtPosition, dan tetapkan ke mSpinnerLabel. Anda juga bisa menambahkan sebuah panggilan ke metode showText() yang sudah Anda tambahkan ke versi aplikasi sebelumnya:
Tip: Dengan menambahkan metode showText() ke metode onItemSelected() di atas, Anda telah mengaktifkan listener pilihan spinner untuk menampilkan pilihan spinner bersama dengan nomor telepon, sehingga Anda tidak lagi memerlukan tombol Show yang memanggil metode showText().
3. Tambahkan kode ke metode callback onNothingSelected() yang kosong, seperti yang ditampilkan di bawah ini, untuk menampilkan pesan logcat jika tidak satu pun yang dipilih:
TAG di pernyataan di atas berwarna merah karena belum didefinisikan.
4. Ekstrak sumber daya string untuk “onNothingSelected: ” ke nothing_selected.
5. Klik TAG, klik bola lampu merah, dan pilih Create constant field ‘TAG’ dari menu munculan. Android Studio menambahkan yang berikut di bawah deklarasi kelas MainActivity:
private static final String TAG = ;
1. Tambahkan MainActivity.class.getSimpleName() agar menggunakan nama sederhana kelas untuk TAG:
private static final String TAG = MainActivity.class.getSimpleName();
1. Ubah pernyataan String showString di metode showText untuk menampilkan string yang dimasukkan dan item spinner yang dipilih (mSpinnerLabel):
String showString = (editText.getText().toString() + ” – ” + mSpinnerLabel);
1. Jalankan aplikasi.
Spinner muncul di sebelah bidang entri telepon dan menampilkan pilihan pertama (Home). Mengetuk spinner akan memunculkan semua pilihan, seperti yang ditampilkan di sebelah kiri gambar di bawah ini. Setelah memasukkan nomor telepon dan memilih item spinner, sebuah pesan muncul bawah layar dengan nomor telepon dan item spinner yang dipilih, seperti yang ditampilkan di sebelah kanan gambar di bawah ini. (Anda juga bisa mengetuk tombol Show untuk menampilkan nomor telepon dan item spinner, tetapi karena ini berlebihan, Anda sekarang bisa menghilangkan tombol Show.)

Tugas 4: Menggunakan dialog untuk peringatan yang memerlukan keputusan
Anda bisa menyediakan dialog untuk peringatan yang mengharuskan pengguna membuat keputusan. Dialog adalah jendela yang muncul di atas tampilan atau mengisi tampilan, menyela alur aktivitas.
Misalnya, sebuah dialog peringatan mungkin mengharuskan pengguna untuk mengeklik Continuesetelah membacanya, atau memberi pilihan kepada pengguna untuk menyetujui suatu tindakan dengan mengeklik tombol positif (seperti OK atau Accept), atau untuk tidak menyetujui dengan mengeklik tombol negatif (seperti Cancel). Di Android, gunakan subkelas AlertDialog dari kelas Dialog untuk menampilkan dialog standar untuk peringatan.
Tip: Jangan gunakan terlalu banyak dialog karena bisa menyela alur kerja pengguna. Baca Panduan desain dialog untuk praktik desain terbaik, dan Dialog dalam dokumentasi developer Android untuk contoh kode.
Dalam praktik ini Anda akan menggunakan tombol untuk memicu dialog peringatan standar. Di aplikasi nyata, Anda bisa memicu dialog peringatan berdasarkan beberapa ketentuan, atau saat pengguna mengetuk sesuatu.
4.1 Buat proyek baru dengan layout untuk menampilkan dialog peringatan
Dalam latihan ini, Anda akan membangun sebuah peringatan dengan tombol OK dan Cancel, yang akan dipicu oleh klik pengguna pada tombol.
1. Buat proyek baru bernama Alert Sample berdasarkan template Empty Activity.
2. Bukan layout activity_main.xml dan buat perubahan berikut:
Atribut TextView Nilai
android:id “@+id/top_message”
android:text “Tap to test the alert:”
3. Ekstrak string android:text di atas ke dalam tap_test sumber daya untuk membuatnya lebih mudah diterjemahkan.
4. Tambahkan Button dengan atribut berikut:
Atribut Tombol Nilai
android:id “@+button1”
android:layout_width wrap_content
android:layout_height wrap_content
android:layout_below “@id/top_message”
android:layout_marginTop “36dp”
android:text “Alert”
android:onClick “onClickShowAlert”
5. Ekstrak string android:text di atas ke dalam alert_button sumber daya untuk membuatnya lebih mudah diterjemahkan.
6. Ekstrak nilai dimensi untuk android:layout_marginTop dengan cara yang sama: Letakkan kursor di “36dp”, tekan Alt-Enter (Option-Enter di Mac), dan pilih Extract dimension resource. Lalu edit nama Sumber Daya untuk nilai ke button_top_margin.
Penetapan sumber daya dimensi disimpan di file dimens.xml (di app > res > values > dimens). Anda bisa mengedit file ini untuk mengubah penetapan, sehingga aplikasi bisa diubah untuk ukuran layar yang berbeda.
4.2 Menambahkan dialog peringatan ke aktivitas utama
Pola desain builder mempermudah pembuatan objek dari kelas yang membutuhkan banyak atribut wajib serta opsional dan karena itu memerlukan banyak parameter untuk dibangun. Tanpa pola ini, Anda tentunya harus membuat konstruktor untuk kombinasi atribut yang diperlukan dan atribut opsional; dengan pola ini, kode lebih mudah dibaca dan dikelola. Untuk informasi selengkapnya tentang pola desain builder, lihat pola Builder
Kelas builder biasanya merupakan kelas member statis dari kelas yang dibangunnya. Anda menggunakan AlertDialog.Builder untuk membangun dialog peringatan standar, menggunakan setTitleuntuk menyetel judulnya, setMessage untuk menyetel pesannya, dan setPositiveButton dan setNegativeButton untuk menyetel tombolnya.
Untuk membuat peringatan, Anda perlu membuat objek AlertDialog.Builder. Anda akan menambahkan metode onClickShowAlert(), yang akan membuat objek ini sebagai urutan pertama bisnis.
Catatan: Agar memudahkan contoh ini dipahami, dialog peringatan dibuat di metode onClickShowAlert(). Ini hanya terjadi jika metode onClickShowAlert dipanggil, yang akan terjadi saat pengguna mengeklik tombol. Artinya, aplikasi membangun dialog baru hanya saat tombol diklik, yang berguna jika dialog jarang dilihat (saat pengguna mengambil jalur tertentu di aplikasi). Akan tetapi, jika dialog sering mungkin, sebaiknya Anda membangun dialog sekali di metode onCreate(), lalu menjalankan dialog di metode onClickShowAlert.
1. Tambahkan metode onClickShowAlert() ke MainActivity.java seperti berikut:
2. public void onClickShowAlert(View view) {
3. AlertDialog.Builder myAlertBuilder = new
4. AlertDialog.Builder(MainActivity.this);
5. Setel judul dan pesan untuk dialog peringatan dalam onClickShowAlert() setel kode di langkah sebelumnya:
6. Ekstrak judul dan pesan ke dalam sumber daya string. Baris kode sebelumnya sekarang seharusnya menjadi:
7. Tambahkan tombol OK pada peringatan dengan setPositiveButton() dan menggunakan onClickListener():
Anda menyetel tombol positif (OK) dan negatif (Cancel) menggunakan metode setPositiveButton()dan setNegativeButton(). Setelah pengguna mengetuk tombol OK di peringatan, Anda bisa mengambil pilihan pengguna dan menggunakannya di kode Anda. Dalam contoh ini, Anda menampilkan pesan toast jika tombol OK diklik.
8. Ekstrak sumber daya string untuk “OK” dan untuk “Pressed OK”. Pernyataan sekarang seharusnya menjadi:
9. Tambahkan tombol Cancel pada peringatan dengan setNegativeButton() dan onClickListener(), tampilkan pesan toast jika tombol diklik, lalu batalkan dialog:
10. …
11. Ekstrak sumber daya string untuk “Cancel” dan “Pressed Cancel”. Pernyataan sekarang seharusnya menjadi:
12. Tambahkan show() yang membuat lalu menampilkan dialog peringatan, ke akhir onClickShowAlert():
13. Jalankan aplikasi.
Anda seharusnya bisa mengetuk tombol Alert, yang ditampilkan di sebelah kiri gambar berikut, untuk melihat dialog peringatan, yang ditampilkan di tengah gambar berikut ini. Dialog menampilkan tombol OKdan Cancel dan pesan toast muncul yang menampilkan mana yang Anda tekan, seperti yang ditampilkan di sebelah kanan gambar berikut ini.
Tugas 5: Menggunakan picker untuk masukan pengguna
Android menyediakan dialog yang siap digunakan, disebut picker, untuk memilih waktu atau tanggal. Anda bisa menggunakannya untuk memastikan pengguna Anda memilih waktu atau tanggal yang valid, yang diformat dengan benar dan disesuaikan dengan waktu dan tanggal lokal pengguna. Masing-masing picker menyediakan kontrol untuk memilih setiap bagian waktu (jam, menit, AM/PM) atau tanggal (bulan, tanggal, tahun). Anda bisa membaca semua tentang mempersiapkan picker di Picker.
Dalam tugas ini, Anda akan membuat proyek baru, dan menambahkan picker tanggal dan picker waktu. Anda juga akan mempelajari cara menggunakan fragmen. Fragmen adalah perilaku atau bagian antarmuka pengguna dalam suatu aktivitas. Fragmen mirip seperti aktivitas mini di dalam aktivitas utama, dengan siklus hidupnya sendiri, dan digunakan untuk membangun picker. Semua pekerjaan dilakukan untuk Anda. Untuk mengetahui tentang fragmen, lihat Fragmen dalam Panduan API.
Salah satu manfaat menggunakan fragmen untuk picker adalah Anda bisa mengisolasi bagian kode untuk mengelola tanggal dan waktu untuk berbagai lokal yang menampilkan tanggal dan waktu dengan cara yang berbeda. Praktik terbaik untuk menampilkan picker adalah dengan menggunakan instance DialogFragment yang merupakan subkelas Fragmen. DialogFragment menampilkan jendela dialog yang mengambang di atas jendela aktivitasnya. Dalam latihan ini, Anda akan menambahkan fragmen untuk setiap dialog picker dan menggunakan DialogFragment untuk mengelola daur hidup dialog.
Tip: Manfaat lain menggunakan fragmen untuk picker adalah Anda bisa mengimplementasikan konfigurasi layout yang berbeda, seperti dialog dasar pada tampilan berukuran handset atau bagian layout yang disematkan pada tampilan yang besar.
5.1 Membuat layout aktivitas utama
Untuk memulai tugas ini, buat layout aktivitas utama untuk menyediakan tombol untuk mengakses picker waktu dan tanggal. Periksa kode layout XML berikut:
1. Mulai proyek baru yang bernama Date Time Pickers menggunakan template Empty Activity.
2. Buka activity_main.xml untuk mengedit kode layout.
3. Ubah induk RelativeLayout agar menjadi LinearLayout dan tambahkan android:orientation=”vertical” untuk mengatur orientasi layout menjadi vertikal. Tidak perlu mengkhawatirkan penampilan layout saat ini. Sasarannya adalah menggunakan layout yang menyematkan RelativeLayout di dalam LinearLayout:
4. Ubah teks elemen TextView pertama ke “Choose the date and time: ” dan ekstrak teks ke sumber daya string choose_datetime.
Atribut TextView Nilai Lama Nilai Baru
android:text “Hello World” “@string/choose_datetime”
5. Tambahkan atribut android:textSize dan masukkan ukuran teks 20sp. Ekstrak dimensi android:textSize ke text_size.
Atribut TextView Nilai Lama Nilai Baru
android:textSize “@dimen/text_size”
6. Tambahkan turunan RelativeLayout di dalam LinearLayout untuk menampung elemen Button, dan terima lebar dan tinggi default “match parent” .
7. Tambahkan elemen Button pertama di dalam RelativeLayout dengan atribut berikut:
Atribut Tombol Pertama Nilai
android:layout_width “wrap_content”
android:layout_height “wrap_content”
android:id “@+id/button_date”
android:layout_marginTop “12dp”
android:text “Date”
android:onClick “showDatePickerDialog”
8. Tidak perlu mengkhawatirkan referensi showDatePickerDialog berwarna merah. Metode belum didefinisikan—Anda akan mendefinisikannya nanti.
9. Ekstrak string “Date” ke dalam sumber daya string date_button.
10. Ekstrak dimensi “12dp” untuk android:layout_marginTop ke button_top_margin.
11. Tambahkan elemen Button kedua di dalam turunan RelativeLayout atribut berikut:
Atribut Tombol Kedua Nilai
android:layout_width “wrap_content”
android:layout_height “wrap_content”
android:id “@+id/button_time”
android:layout_marginTop “@dimen/button_top_margin”
android:layout_alignBottom “@id/button_date”
android:layout_toRightOf “@id/button_date”
android:text “Time”
android:onClick “showTimePickerDialog”
12. Referensi showTimePickerDialog berwarna merah. Metode belum didefinisikan — Anda akan mendefinisikannya nanti.
13. Ekstrak string “Time” ke dalam sumber daya string time_button.
14. Jika Anda belum melakukannya, klik tab Preview untuk menampilkan pratinjau layout. Pratinjau seharusnya tampak seperti kode dan gambar berikut ini.

5.2 Buat fragmen baru untuk picker tanggal
Dalam latihan ini, Anda akan menambahkan fragmen untuk picker tanggal. Fragmen mirip seperti aktivitas mini di dalam aktivitas utama, dengan daur hidupnya sendiri.
1. Luaskan app > java > com.example.android.DateTimePickers dan pilih MainActivity.
2. Pilih File > New > Fragment > Fragment (Blank), dan beri nama fragmen DatePickerFragment. Kosongkan ketiga opsi kotak centang sehingga Anda tidak membuat XML layout, jangan sertakan metode pabrik fragmen, dan jangan sertakan callback antarmuka. Anda tidak perlu membuat layout untuk picker standar. Klik Finish untuk membuat fragmen.
3. Buka DatePickerFragment dan edit definisi kelas DatePickerFragment untuk memperluas DialogFragment dan dan implementasikan DatePickerDialog.OnDateSetListener untuk membuat picker tanggal standar dengan sebuah listener. Lihat Picker untuk informasi selengkapnya tentang memperluas DialogFragment untuk picker tanggal:
4. public class DatePickerFragment extends DialogFragment
5. implements DatePickerDialog.OnDateSetListener {
Selagi Anda mengetik DialogFragment dan DatePickerDialog.OnDateSetListener , Android Studio otomatis menambahkan yang berikut di blok import di atas:
import android.app.DatePickerDialog;
import android.support.v4.app.DialogFragment;
Sebagai tambahan, ikon bola lampu merah muncul di margin kiri setelah beberapa detik.
6. Klik ikon bola lampu merah dan pilih Implement methods dari menu munculan. Sebuah dialog muncul dengan onDateSet() telah dipilih dan opsi “Insert @Override” dicentang. Klik OK untuk membuat metode onDateSet() kosong. Metode ini akan dipanggil saat pengguna menyetel tanggal. Setelah menambahkan metode onDateSet() kosong, Android Studio secara otomatis menambahkan yang berikut ini dalam blok import di atas.
7. import android.widget.DatePicker;
Parameter metode onDateSet() harus int year, dan int month, dan int dayOfMonth. Ubah parameter dayOfMonth ke day agar ringkas:
public void onDateSet(DatePicker view, int year, int month, int day)
8. Buang konstruktor publik kosong untuk DatePickerFragment.
9. Ganti onCreateView() dengan onCreateDialog() yang mengembalikan Dialog, dan anotasikan onCreateDialog() dengan @NonNull untuk menunjukkan bahwa nilai pengembalian Dialog tidak boleh null—upaya apa pun untuk mengacu pada nilai pengembalian Dialog harus dicentang null.
10. Tambahkan kode berikut ke onCreateDialog() untuk membuat instance year, month, dan day dari Calendar, dan mengembalikan dialog dan nilai ini ke aktivitas utama. Saat Anda memasukkan Calendar, tetapkan import menjadi java.util.Calendar.
5.3 Buat fragmen baru untuk picker waktu
Tambahkan fragmen ke proyek DateTimePickers untuk picker waktu:
1. Pilih MainActivity lagi.
2. Pilih File > New > Fragment > Fragment (Blank), dan beri nama fragmen TimePickerFragment. Kosongkan ketiga opsi sehingga Anda tidak membuat XML layout, jangan sertakan metode pabrik fragmen, dan jangan sertakan callback antarmuka. Klik Finish untuk membuat fragmen.
3. Bukan *TimePickerFragment dan ikuti prosedur yang sama dengan DatePickerFragment, mengimplementasikan metode kosong onTimeSet(), mengganti onCreateView() dengan onCreateDialog(), dan menghapus konstruktor publik untuk TimePickerFragment. TimePickerFragment melakukan tugas yang sama dengan DatePickerFragment, tetapi dengan nilai waktu:
o Ini memperluas DialogFragment dan mengimplementasikan TimePickerDialog.OnTimeSetListener untuk membuat picker waktu standar dengan sebuah listener. Lihat Picker untuk informasi selengkapnya tentang memperluas DialogFragment untuk picker waktu:
o Ini menggunakan metode onCreateDialog() untuk melakukan inisialisasi hour dan minute dari Calendar, dan mengembalikan dialog dan nilai ini ke aktivitas utama menggunakan format tanggal 24 jam. Saat Anda memasukkan Calendar, tetapkan import menjadi java.util.Calendar.
o Ini juga mendefinisikan metode onTimeSet() kosong agar Anda bisa menambahkan kode untuk menggunakan hourOfDay dan minute yang dipilih pengguna. Metode ini akan dipanggil saat pengguna menyetel waktu:
5.4 Modifikasi aktivitas utama
Meskipun kebanyakan kode di aktivitas utama tetap sama, Anda perlu menambahkan metode yang membuat instance FragmentManager untuk mengelola setiap fragmen dan menampilkan setiap picker.
1. Buat sumber daya string di strings.xml:

2. Buka MainActivity.
3. Tambahkan metode showDatePickerDialog() dan showTimePickerDialog(), dengan merujuk ke kode di bawah ini. Ini membuat instance FragmentManager untuk mengelola fragmen secara otomatis, dan untuk menampilkan picker. Untuk informasi selengkapnya tentang fragmen, lihat Fragmen.
4. Jalankan aplikasi. Anda akan melihat picker tanggal dan waktu setelah mengetuk tombol.
5.5 Gunakan tanggal dan waktu yang dipilih
Dalam latihan ini, Anda akan meneruskan tanggal dan waktu kembali ke MainActivity dan mengonversi tanggal dan waktu ke string yang bisa Anda tampilkan di pesan toast.
1. Buka MainActivity dan tambahkan tanda tangan metode processDatePickerResult() yang mengambil year, month, dan day sebagai argumen:
2. public void processDatePickerResult(int year, int month, int day) {
3. }
4. Tambahkan kode berikut ke metode processDatePickerResult() untuk mengonversi month, day, dan year ke string yang terpisah:
Tip: Integer month yang dikembalikan oleh picker tanggal mulai menghitung dari 0 untuk Januari, sehingga Anda perlu menambahkan 1 untuk mulai menampilkan bulan mulai dari 1.
5. Tambahkan yang berikut ini setelah kode di atas untuk menggabungkan tiga string dan menyertakan garis miring untuk format tanggal A.S.:
6. Tambahkan yang berikut ini setelah pernyataan di atas untuk menampilkan pesan toast:
7. Ekstrak string “Date: ” hard-code ke dalam sumber daya string bernama date. Hal ini secara otomatis mengganti string hard-code dengan getString(R.string.date). Kode untuk metode processDatePickerResult() sekarang harus terlihat seperti ini:
8. Buka DatePickerFragment dan tambahkan yang berikut ini ke metode onDateSet() untuk menjalankan metode processDatePickerResult() di MainActivity dan meneruskan year, month, dan day ke metode:
Anda menggunakan getActivity(), yang jika digunakan dalam fragmen, akan mengembalikan aktivitas yang saat ini dikaitkan dengan fragmen. Anda memerlukannya karena Anda tidak bisa memanggil suatu metode dalam MainActivity tanpa konteks MainActivity (Anda harus menggunakan intent sebagai ganti, seperti yang Anda pelajari pada pembelajaran sebelumnya). Aktivitas mewarisi konteks, sehingga Anda bisa menggunakannya sebagai konteks untuk memanggil metode (seperti dalam activity.processDatePickerResult).
9. TimePickerFragment menggunakan logika yang sama. 1.Buka MainActivity dan tambahkan tanda tangan metode processTimePickerResult() yang mengambil hourOfDay dan minute sebagai argumen:
10. public void processTimePickerResult(int hourOfDay, int minute) {
11. }
12. Tambahkan kode berikut ke metode processTimePickerResult() untuk mengonversi hourOfDay dan minute ke string yang terpisah:
13. Tambahkan yang berikut ini setelah kode di atas untuk menggabungkan string dan menyertakan titik dua untuk format waktu:
14. Tambahkan yang berikut ini setelah pernyataan di atas untuk menampilkan pesan toast:
15. Ekstrak string “Time: ” hard-code ke dalam sumber daya string bernama time. Hal ini secara otomatis mengganti string hard-code dengan getString(R.string.time). Kode untuk metode processDatePickerResult() sekarang harus terlihat seperti ini:
16. Buka TimePickerFragment dan tambahkan yang berikut ini ke metode onTimeSet() untuk memanggil metode processTimePickerResult() di MainActivity dan meneruskan hourOfDay dan minute ke metode:
17. Anda sekarang bisa menjalankan aplikasi. Setelah memilih tanggal atau waktu, tanggal atau waktu muncul di pesan toast di bagian bawah, seperti yang ditampilkan dalam gambar di bawah ini.
Tugas 6: Menggunakan tampilan gambar sebagai tombol
Anda bisa membuat tampilan agar bisa diklik, sebagai tombol, dengan menambahkan atributandroid:onClick di layout XML. Misalnya, Anda bisa membuat gambar agar berfungsi sebagai tombol dengan menambahkan android:onClick ke ImageView.
Tip: Jika Anda menggunakan beberapa gambar sebagai gambar yang bisa dklik, atur gambar dalam sebuah viewgroup sehingga dikelompokkan bersama.
Dalam tugas ini, Anda akan membuat prototipe aplikasi untuk memesan pencuci mulut dari kafe. Setelah memulai proyek baru berdasarkan template Basic Activity, Anda akan memodifikasi TextView “Hello World” dengan teks yang sesuai, dan menambahkan gambar yang digunakan untuk tombol “Add to order”.
6.1 Mulai proyek baru
1. Mulai proyek Android Studio baru dengan nama aplikasi Droid Cafe. Pilih template Basic Activity, terima setelan default, dan klik Finish. Proyek terbuka dengan dua layout dalam folder res > layout: activity_main.xml, dan content_main.xml.
2. Buka content_main.xml dan ekstrak string “Hello World” di TextView untuk menggunakan nama sumber daya intro_text. Lalu buka strings.xml dan ubah definisi sumber daya intro_text untuk menggunakan lebih banyak teks deskriptif, seperti Droid Desserts:
3. Droid Desserts
4. Ubah TextView di layout agar menggunakan ukuran teks yang lebih besar 24sp dan padding 10dp, dan tambahkan atribut android:id dengan id textintro.
5. Ekstrak sumber daya dimensi untuk atribut android:padding ke nama sumber daya padding_regular, dan atribut android:textSize ke sumber daya text_heading. Anda akan menggunakan nama sumber daya ini di langkah-langkah selanjutnya.
6. Tambahkan TextView lagi di bawah textintro TextView dengan atribut berikut:
Atribut TextView Nilai
android:layout_width “wrap_content”
android:layout_height “wrap_content”
android:padding “@dimen/padding_regular”
android:id “@+id/choose_dessert”
android:layout_below “@id/textintro”
android:text “Choose a dessert.”
7. Ekstrak sumber daya string untuk atribut android:text ke nama sumber daya choose_a_dessert.
6.2 Tambahkan gambar
1. Gambar bernama circle.jpg, froyo_circle.jpg, dan icecream_circle.jpg disediakan dengan aplikasi starter di file 4_1_P_starter_images.zip yang bisa Anda unzip di komputer. Untuk menyalin gambar ke proyek Anda, ikuti langkah-langkah ini:
a. Tutup proyek Anda.
b. Salin file gambar ke dalam folder drawable proyek Anda. Temukan folder drawable di proyek dengan menggunakan jalur ini: project_name > app > src > main > res > drawable
c. Buka kembali proyek Anda.
2. Buka file content_main.xml lagi dan tambahkan sebuah ImageView untuk gambar donat ke layout di bawah tampilan choose_dessert, menggunakan atribut berikut:
Atribut ImageView untuk donat Nilai
android:layout_width “wrap_content”
android:layout_height “wrap_content”
android:padding “@dimen/padding_regular”
android:id “@+id/donut”
android:layout_below “@id/choose_dessert”
android:contentDescription “Donuts are glazed and sprinkled with candy.”
android:src “@drawable/donut_circle”
3. Ekstrak nilai atribut android:contentDescription ke sumber daya string donuts. Anda akan menggunakan sumber daya string ini di langkah berikutnya.
4. Tambahkan TextView yang akan muncul di di sebelah gambar donat sebagai deskripsi, atribut berikut:
Atribut TextView Nilai
android:layout_width “wrap_content”
android:layout_height “wrap_content”
android:padding “35dp”
android:layout_below “@+id/choose_dessert”
android:layout_toRightOf “@id/donut”
android:text “@string/donuts”
5. Ekstrak sumber daya dimensi untuk atribut android:padding ke nama sumber daya padding_wide. Anda akan menggunakan nama sumber daya ini di langkah-langkah selanjutnya.
6. Tambahkan ImageView kedua ke layout untuk sandwich es krim, menggunakan atribut berikut:
Atribut ImageView untuk ice_cream Nilai
android:layout_width “wrap_content”
android:layout_height “wrap_content”
android:padding “@dimen/padding_regular”
android:id “@+id/ice_cream”
android:layout_below “@id/donut”
android:contentDescription “Ice cream sandwiches have chocolate wafers and vanilla filling.”
android:src “@drawable/icecream_circle”
7. Ekstrak nilai atribut android:contentDescription ke sumber daya string ice_cream_sandwiches.
8. Tambahkan TextView yang akan muncul di di sebelah sandwich es krim sebagai deskripsi, dengan atribut berikut:
Atribut TextView Nilai
android:layout_width “wrap_content”
android:layout_height “wrap_content”
android:padding “@dimen/padding_wide”
android:layout_below “@+id/donut”
android:layout_toRightOf “@id/ice_cream”
android:text “@string/ice_cream_sandwiches”
9. Tambahkan ImageView ketiga ke layout untuk froyo, menggunakan atribut berikut:
Atribut ImageView untuk ice_cream Nilai
android:layout_width “wrap_content”
android:layout_height “wrap_content”
android:padding “@dimen/padding_regular”
android:id “@+id/froyo”
android:layout_below “@id/ice_cream”
android:contentDescription “FroYo is premium self-serve frozen yogurt.”
android:src “@drawable/froyo_circle”
10. Ekstrak nilai atribut android:contentDescription ke sumber daya string froyo.
11. Tambahkan TextView yang akan muncul di di sebelah gambar froyo sebagai deskripsi, dengan atribut berikut:
Atribut TextView Nilai
android:layout_width “wrap_content”
android:layout_height “wrap_content”
android:padding “@dimen/padding_wide”
android:layout_below “@+id/ice_cream”
android:layout_toRightOf “@id/froyo”
android:text “@string/froyo”
6.3 Tambahkan metode onClick untuk tampilan gambar
Anda bisa menambahkan atribut android:onClick ke View apa pun untuk membuatnya bisa diklik sebagai tombol. Di langkah ini, Anda akan menambahkan android:onClick ke gambar di layout content_main.xml. Anda juga perlu menambahkan metode untuk atribut android:onClick yang akan dipanggil. Metode ini, untuk tugas ini, menampilkan pesan toast yang menampilkan gambar mana yang diketuk. (Di tugas berikutnya, Anda akan memodifikasi metode untuk meluncurkan aktivitas lain yang disebut OrderActivity.)
1. Tambahkan sumber daya string berikut ke file strings.xml yang akan ditampilkan di pesan toast:
2. You ordered a donut.
3. You ordered an ice cream sandwich.
4. You ordered a FroYo.
5. Tambahkan metode displayToast() berikut untuk menampilkan pesan toast:
6. public void displayToast(String message) {
7. Toast.makeText(getApplicationContext(), message,
8. Toast.LENGTH_SHORT).show();
9. }
10. Tambahkan metode showFoodOrder() berikut di akhir MainActivity* (sebelum tanda kurung penutup). Untuk tugas ini, gunakan metode displayToast() untuk menampilkan pesan toast:
Tip: Empat baris pertama adalah komentar dalam format Javadoc, yang memudahkan pemahaman kode dan juga membantu membuat dokumentasi untuk kode Anda jika Anda menggunakan Javadoc. Menambahkan komentar seperti itu ke setiap metode baru yang Anda buat merupakan praktik terbaik. Untuk informasi selengkapnya tentang cara menulis komentar, lihat Cara Menulis Komentar untuk Alat Javadoc.
Meskipun Anda mungkin telah menambahkan metode ini di posisi mana pun di dalam MainActivity, sebaiknya tempatkan metode Anda sendiri di bawah metode yang telah disediakan di dalam MainActivity oleh template.
1. Tambahkan metode berikut di akhir MainActivity (Anda bisa menambahkannya sebelum showFoodOrder()):
2. Tambahkan atribut android:onClick ke tiga ImageView di content_main.xml:
3. Jalankan aplikasi.
Mengeklik gambar donat, sandwich es krim, atau froyo akan menampilkan pesan toast tentang pesanan, seperti yang ditampilkan dalam gambar di bawah ini.
Tugas 7: Menggunakan tombol radio
Tombol radio adalah kontrol masukan yang berguna untuk memilih hanya satu opsi dari serangkaian opsi. Anda harus menggunakan tombol radio jika Anda ingin pengguna melihat semua opsi yang tersedia secara berdampingan. Jika tidak perlu menampilkan semua opsi secara berdampingan, sebaiknya gunakan spinner.
Nanti dalam praktik ini, Anda akan menambahkan aktivitas dan layout layar lainnya untuk menyetel opsi pengantaran untuk pesanan makanan, dan menggunakan tombol radio untuk pilihan pengantaran.
Untuk ringkasan dan kode contoh lainnya untuk tombol radio, lihat Tombol Radio.
7.1 Tambahkan aktivitas lain
Sesuai yang telah Anda pelajari di pelajaran sebelumnya, sebuah aktivitas merepresentasikan satu layar di aplikasi Anda tempat pengguna Anda bisa melakukan satu tugas yang terfokus. Anda sudah memiliki satu aktivitas, MainActivity.java. Anda sekarang akan menambahkan aktivitas lain untuk menyetel opsi pengiriman untuk pesanan, dan menggunakan intent eksplisit untuk meluncurkan aktivitas kedua.
1. Klik kanan folder com.example.android.droidcafe di kolom kiri dan pilih New > Activity > Empty Activity. Edit Nama Aktivitas agar menjadi OrderActivity dan Nama Layout menjadi activity_order. Jangan ubah opsi lain, dan klik Finish.
Kelas OrderActivity sekarang seharusnya dicantumkan di bawah MainActivity di folder java dan activity_order.xml sekarang seharusnya dicantumkan di folder layout. Template Empty Activity ditambahkan di file berikut.
2. Buka MainActivity. Ubah metode showFoodOrder() untuk membuat intent eksplisit untuk memulai OrderActivity:
3. Jalankan aplikasi. Mengeklik tombol gambar sekarang akan meluncurkan aktivitas kedua, yaitu layar kosong. (Pesan toast muncul sebentar di layar kosong.)
7.2 Tambahkan layout untuk tombol radio
Untuk membuat setiap opsi tombol radio, Anda akan membuat elemen RadioButton di file layout activity_order.xml, yang ditautkan ke OrderActivity. Setelah mengedit file layout, layout untuk tombol radio di OrderActivity harus tampak seperti gambar di bawah ini.
Karena pilihan tombol radio bersifat eksklusif secara mutual, Anda akan mengelompokkan tombol-tombol ini di dalam RadioGroup. Dengan mengelompokkan tombol radio, sistem Android memastikan hanya satu tombol radio yang bisa dipilih dalam satu waktu.
Catatan: Urutan cantuman elemen `RadioButton` menentukan urutan tampilannya di layar.
1. Buka activity_order.xml dan tambahkan elemen TextView dengan id order_intro_text:
Atribut TextView Nilai
android:id “@+id/order_intro_text”
android:layout_width “match_parent”
android:layout_height “wrap_content”
android:layout_marginTop “24dp”
android:layout_marginBottom “6dp”
android:textSize “18sp”
android:text “Choose a delivery method:”
2. Ekstrak sumber daya string untuk “Choose a delivery method:” menjadichoose_delivery_method.
3. Ekstrak sumber daya dimensi untuk nilai margin:
4. Tambahkan tiga elemen RadioButton berikut di dalam RadioGroup menggunakan atribut berikut. Entri “onRadioButtonClicked” untuk atribut onClick akan disorot sampai Anda menambahkan metode tersebut di tugas berikutnya.
Atribut #1 RadioButton Nilai
android:id “@+id/sameday”
android:layout_width “wrap_content”
android:layout_height “wrap_content”
android:text “Same day messenger service”
android:onClick “onRadioButtonClicked”
Atribut #2 RadioButton Nilai
android:id “@+id/nextday”
android:layout_width “wrap_content”
android:layout_height “wrap_content”
android:text “Next day ground delivery”
android:onClick “onRadioButtonClicked”
Atribut #3 RadioButton Nilai
android:id “@+id/pickup”
android:layout_width “wrap_content”
android:layout_height “wrap_content”
android:text “Pick up”
android:onClick “onRadioButtonClicked”
7. Ekstrak tiga sumber daya string untuk atribut android:text ke nama-nama berikut, sehingga string bisa dengan mudah diterjemahkan:
o same_day_messenger_service
o next_day_ground_delivery
o pick_up
7.3 Tambahkan handler klik tombol radio
Atribut android:onClick untuk setiap elemen tombol radio menetapkan metode onRadioButtonClicked()untuk menangani kejadian klik. Dengan demikian, Anda perlu menambahkan metode onRadioButtonClicked() baru di kelas OrderActivity.
Biasanya, aplikasi Anda akan menampilkan pesan mengenai tipe pengantaran seperti apa yang dipilih. Anda akan membuat ini dengan pesan toast dengan membuat metode yang bernama displayToast() di OrderActivity.
Di metode onRadioButtonClicked(), Anda akan menggunakan blok switch case untuk memeriksa apakah tombol radio telah diklik. Di akhir blok switch case, Anda akan menambahkan pernyataan default yang menampilkan pesan log jika tidak satu pun tombol radio yang dicentang.
1. Buka strings.xml dan buat sumber daya string berikut:
a. Sebuah sumber daya yang bernama chosen untuk string “Chosen: ” (sertakan spasi setelah titik dua dan tanda tanya).
b. Sebuah sumber daya yang bernama nothing_clicked untuk string “onRadioButtonClicked: Nothing clicked.”
2. Buka OrderActivity dan tambahkan pernyataan berikut untuk mendefinisikan TAG_ACTIVITY untuk pesan log:
3. Tambahkan metode displayToast berikut ke OrderActivity:
4. Tambahkan metode onRadioButtonClicked() berikut, yang memeriksa untuk melihat apakah tombol radio telah dicentang, dan menggunakan blok switch case untuk menentukan item tombol radio mana yang dipilih, untuk menyetel message yang sesuai untuk item tersebut untuk digunakan bersama displayToast():
5.
6. Jalankan aplikasi. Ketuk sebuah pesan untuk melihat aktivitas OrderActivity, yang menampilkan pilihan pengantaran. Ketuk pilihan pengantaran dan Anda akan melihat pesan toast di bagian bawah layar dengan pilihan, seperti yang ditampilkan dalam gambar di bawah ini.

3.1 P: Menggunakan Debugger

Untuk Screen Shoot dapat di akses di : https://drive.google.com/file/d/1hwxXzzjbZ0i44kbQC_6ugpU4S32UAzsr/view?usp=sharing

3.1 P: Menggunakan Debugger
1.1 Unduh dan buka proyek SimpleCalc
1. Unduh dan ekstrak folder proyek SimpleCalc project folder.
2. Mulai Android Studio dan pilih File > Open.
3. Buka folder untuk menemukan SimpleCalc, pilih file folder, dan klik OK.
Pembangunan Proyek SimpleCalc. Buka tampilan proyek jika belum terbuka.
1.2 Menjelajahi Layout
1. Buka res/layout/activity_main.xml.
2. Pratinjau layout dalam Layout Editor.
3. Periksa kode layout, desain, dan catat hal-hal berikut ini:
o Layout berisi dua EditTexts untuk input, empat tampilan Tombol untuk penghitungan, dan satu TextViews untuk menampilkan hasilnya.
o Setiap tombol penghitungan memiliki handler onClick-nya sendiri (onAdd, OnSub, dan sebagainya.)
o TextView untuk hasil tidak memiliki teks di dalamnya secara default.
o Tampilan EditText memiliki properti android:inputType dan nilai “numberDecimal”. Properti ini menunjukkan bahwa EditText hanya menerima angka sebagai input. Keyboard yang muncul pada layar juga hanya akan berisi angka. Anda akan mengetahui selengkapnya tentang tipe input untuk EditText dalam praktik berikutnya.

1.3 Jelajahi kode aplikasi
1. Perluas folder aplikasi/java folder dalam tampilan proyek Android. Selain kelas MainActivity, proyek ini juga menyertakan kelas Kalkulator utilitas.
2. Buka Kalkulator (java/com.example.android.simplecalc/Calculator.java). Periksa kodenya. Setelah pemeriksaan, Anda bisa melakukan observasi berikut:
o Operasi yang dapat dilakukan ditentukan oleh enum Operator.
o Semua metode operasi bersifat publik.
3. Buka MainActivity (java/com.example.android.simplecalc/MainActivity). Periksa kodenya. Observasi apa yang bisa Anda lakukan tentang kode dan aktivitas? Pikirkan jawabannya dan konfirmasi hal-hal berikut:
o Semua handler onClick memanggil metode compute() privat, dengan nama operasi sebagai salah satu nilai dari enumerasi Calculator.Operator.
o Metode compute() memanggil metode privat getOperand() (yang bergantian memanggil getOperandText()) untuk mengambil nilai angka dari EditTexts.
o Metode compute() menggunakan switch pada nama operand untuk memanggil metode yang tepat dalam kelas Calculator.
o Metode penghitungan dalam kinerja kelas Calculator melakukan aritmetika yang sebenarnya dan mengembalikan nilai.
o Bagian terakhir metode compute() memperbarui TextView dengan hasil penghitungan,
4. Jalankan aplikasi. Coba hal-hal berikut ini:
o Masukkan integer dan nilai titik-mengambang untuk penghitungan.
o Masukkan nilai titik-mengambang dengan pecahan desimal besar (misalnya, 1.6753456)
o Bagi angka dengan nol.
o Biarkan salah satu atau kedua tampilan EditText kosong, dan coba penghitungan apa pun.
5. Periksa pelacakan tumpukan dalam Android Studio saat aplikasi melaporkan kesalahan.
Jika pelacakan tumpukan tidak terlihat, klik tombol Android Monitor pada tombol Android Studio, lalu klik logcat.
Jika satu atau kedua tampilan EditText dalam SimpleCalc kosong, aplikasi melaporkan “Kesalahan” dan log sistem menampilkan status tumpukan eksekusi saat aplikasi menghasilkan kesalahan. Pelacakan tumpukan biasanya menyediakan informasi penting tentang mengapa kesalahan terjadi.

Tugas 2. Menjalankan SimpleCalc di Debugger
Dalam tugas ini Anda akan mendapatkan pengenalan ke debugger dalam Android Studio dan belajar cara menjalankan aplikasi dalam mode debug.
2.1 Memulai dan Menjalankan aplikasi dalam mode debug
1. Dalam Android Studio, pilih Run > Debug app atau klik ikon Debug di toolbar.
Jika aplikasi sudah berjalan, Anda akan ditanyakan apakah ingin memulai ulang aplikasi dalam mode debug. Klik Restart app.
Android Studio membangun dan menjalankan aplikasi pada emulator atau perangkat. Men-debug sama saja pada kedua kasus. Saat Android Studio memulai debugger, Anda mungkin melihat pesan yang berbunyi “Waiting for debugger” pada perangkat sebelum Anda bisa menggunakan aplikasi.
Jika tampilan Debug tidak secara otomatis muncul dalam Android Studio, klik tab Debug di bagian bawah layar, lalu tab Debugger.
2. Buka file MainActivity.java dan klik baris keempat metode compute() (baris setelah pernyataan try).
3. Klik di gutter kiri jendela editor baris tersebut, sebelah nomor baris. Titik merah muncul di baris itu, menunjukkan breakpoint.
Anda juga bisa menggunakan Run > Toggle Line Breakpoint atau Control-F8 (Command-F8 di OS X) untuk menyetel atau menghapus breakpoint pada baris.

Dalam aplikasi SimpleCalc, masukkan nomor pada tampilan EditText dan klik salah satu tombol hitung.
Eksekusi aplikasi berhenti saat mencapai breakpoint yang Anda setel, dan debugger menampilkan status saat ini aplikasi Anda pada breakpoint tersebut.

1. Periksa jendela Debug. Termasuk bagian ini:
2. Panel Frames: menunjukkan frame tumpukan eksekusi saat ini untuk thread yang diberikan. Tumpukan eksekusi menunjukkan setiap kelas dan metode yang telah dipanggil dalam aplikasi dan dalam waktu proses Android, dengan metode terbaru di bagian atas. Thread muncul pada menu tarik turun. Aplikasi saat ini berjalan dalam thread utama, dan aplikasi menjalankan metode compute() dalam MainActivity.
3. Panel Variables: menampilkan variabel dalam lingkup saat ini dan nilainya. Pada tahap eksekusi aplikasi ini, variabel yang tersedia adalah: this (untuk aktivitas), operator (nama operator dari Calculator.Operator, tempat metode dipanggil), dan variabel global untuk EditText dan TextView. Setiap variabel dalam panel ini memiliki segitiga pengungkapan yang memungkinkan Anda melihat properti objek yang berada dalam variabel tersebut. Coba luaskan variabel untuk menjelajahi propertinya.
4. Panel Watches: menampilkan nilai-nilai untuk variabel watches yang sudah Anda setel. Watches mengizinkan Anda mengawasi variabel spesifik dalam program dan melihat variabel tersebut berubah saat program dijalankan.
5. Lanjutkan eksekusi aplikasi dengan Run > Resume Program atau klik Resume ikon di sisi kiri tampilan jendela debugger.
Aplikasi SimpleCalc terus berjalan, dan Anda bisa berinteraksi dengan aplikasi sampai eksekusi kode lain waktu mencapai breakpoint.

2.2 Men-debug aplikasi yang berjalan
Jika aplikasi sudah berjalan pada perangkat atau emulator, dan Anda memutuskan untuk men-debug perangkat itu, Anda dapat memindahkan aplikasi yang sudah berjalan ke mode debug.
1. Jalankan aplikasi SimpleCalc secara normal, dengan ikon Run ikon.
2. Pilih Run > Attach debugger to Android process atau klik Attach di bilah alat.
3. Pilih proses aplikasi dari dialog yang muncul. Klik OK

Jendela Debug muncul, dan Anda sekarang bisa men-debug aplikasi jika sudah memulainya dalam mode debug.
Tugas 3: Menjelajahi Fitur Debugger
Dalam tugas ini kita akan menjelajahi beragam fitur dalam debugger Android Studio, termasuk menjalankan aplikasi baris per baris, bekerja dengan breakpoint, dan memeriksa variabel.
3.1 Menyusuri eksekusi aplikasi
Setelah breakpoint, Anda bisa menggunakan debugger untuk mengeksekusi setiap baris kode dalam aplikasi satu per satu, dan memeriksa status variabel saat aplikasi berjalan.
1. Debug aplikasi dalam Android Studio, dengan breakpoint yang sudah disetel pada tugas terakhir.
2. Dalam aplikasi, masukkan angka dalam tampilan EditText dan klik tombol Add.
Eksekusi aplikasi Anda berhenti pada breakpoint yang sudah disetel sebelumnya, dan debugger menunjukkan status aplikasi saat ini. Baris saat ini disorot dalam kode Anda.
3. Klik tombol Step Over di bagian atas jendela debugger.
Debugger mengeksekusi baris saat ini dalam metode compute() (tempat breakpoint, penetapan untuk operandOne), dan sorotan pindah ke baris berikutnya dalam kode (penetapan untuk operandTwo). Panel Variables diperbarui untuk merefleksikan status eksekusi baru, dan nilai variabel saat ini juga muncul setelah setiap baris kode sumber yang dicetak miring.
Anda juga bisa menggunakan Run > Step Over, atau F8, untuk melangkahi kode Anda.
4. Di baris berikutnya (penetapan untuk operandTwo), klik ikon Step Into ikon.
Step Into melompat ke eksekusi panggilan metode dalam baris saat ini (bukan hanya mengeksekusi metode dan tetap berada pada baris yang sama). Dalam hal ini, karena penetapan termasuk panggilan ke getOperand(), debugger menggulir kode MainActivity ke definisi metode tersebut.
Saat melangkah ke dalam metode, panel Frames diperbarui untuk menunjukkan bingkai baru dalam tumpukan panggilan (di sini getOperand()), dan panel Variables menunjukkan variabel yang tersedia dalam lingkup metode baru. Anda bisa mengeklik baris mana saja pada panel Frames untuk melihat titik dalam bingkai tumpukan, tempat metode dipanggil.

1. Klik Step Over untuk menjalankan setiap baris dalam getOperand(). Perhatikan bahwa saat metode selesai debugger mengembalikan Anda ke titik awal saat Anda memulai metode, dan semua panel diperbarui dengan informasi baru.
2. Gunakan Step Over dua kali untuk memindahkan titik eksekusi ke baris pertama di dalam pernyataan kasus untuk ADD.
3. Klik Step Into .
Debugger mengeksekusi metode yang sesuai dan didefinisikan dalam kelas Kalkulator, buka Calculator.java file, dan gulir ke titik eksekusi dalam kelas tersebut. Lagi, beragam pembaruan panel untuk merefleksikan status baru.
4. Gunakan ikon Step Out untuk mengeksekusi sisa metode penghitungan itu dan mengembalikan ke metode compute() dalam MainActivity. Lalu Anda bisa meneruskan men-debug metode compute() yang tadi ditinggalkan.
Anda juga bisa menggunakan Run > Step Out atau Shift-F8 untuk keluar dari eksekusi metode.

3.2 Bekerja dengan Breakpoint
Gunakan breakpoint untuk menunjukkan di mana dalam kode Anda ingin menyela eksekusi aplikasi untuk men-debug porsi itu dari aplikasi.
1. Temukan breakpoint yang disetel pada tugas terakhir saat memulai metode compute() dalam MainActivity.
2. Tambahkan breakpoint ke awal pernyataan switch.
3. Klik kanan di breakpoint baru itu dan masukkan tes berikut ke dalam bidang Condition:
4. (operandOne == 42)||(operandTwo == 42)
5. Klik Done.

Breakpoint kedua ini adalah breakpoint bersyarat. Eksekusi aplikasi hanya akan berhenti pada breakpoint ini jika tes dalam kondisi ini benar. Dalam kasus ini, ekspresi hanya benar jika satu atau operand lain yang Anda masukkan adalah 42. Anda dapat memasukkan ekspresi Java apa pun selama menghasilkan boolean.
6. Jalankan aplikasi dalam mode debug (Run > Debug), atau klik Resume jika sudah berjalan. Dalam aplikasi, masukkan dua nomor selain 42 dan klik tombol Add. Eksekusi berhenti pada breakpoint pertama dalam metode compute().

7. Klik Resume untuk melanjutkan men-debug aplikasi. Amati bahwa eksekusi tidak berhenti pada breakpoint kedua, karena kondisi tidak terpenuhi.

8. Klik kanan breakpoint pertama dan hapus centang Enabled. Klik Done. Amati bahwa ikon breakpoint sekarang memiliki titik hijau dengan garis merah.
Menonaktifkan breakpoint memungkinkan Anda untuk “membisukan” breakpoint sementara waktu tanpa menghapusnya dari kode. Jika Anda menghapus breakpoint sekaligus Anda juga akan kehilangan kondisi yang Anda buat, jadi menonaktifkannya adalah pilihan yang lebih baik.

Anda juga bisa membisukan semua breakpoint sekaligus dalam aplikasi dengan ikon Mute Breakpoints .
9. Dalam aplikasi, masukkan 42 dalam EditText dan klik tombol apa saja. Amati bahwa breakpoint bersyarat pada pernyataan switch menghentikan eksekusi (kondisi terpenuhi.)

10. Klik View ikon Breakpoints di tepi kiri jendela debugger. Jendela Breakpoints muncul.
Jendela Breakpoints memungkinkan Anda untuk melihat semua breakpoint dalam aplikasi, mengaktifkan atau menonaktifkan breakpoint individual dan menambahkan fitur breakpoint tambahan termasuk kondisi, dependensi pada breakpoints lain, dan mencatat log.

11. Klik Done untuk menutup jendela breakpoint.

3.3 Memeriksa dan memodifikasi variabel
Debugger Android Studio mengizinkan Anda memeriksa status variabel dalam aplikasi saat aplikasi itu berjalan.
1. Jalankan aplikasi SimpleCalc dalam mode debug jika belum dijalankan.
2. Dalam aplikasi, masukkan dua nomor, salah satunya 42, dan klik tombol Add.
Breakpoint pertama dalam compute() masih dibisukan. Eksekusi berhenti pada breakpoint kedua (pada pernyataan switch), dan debugger muncul.

3. perhatikan dalam panel Variables bagaimana variabel operandOne dan operandTwo memiliki nilai yang Anda masukkan ke dalam aplikasi.

4. Amati bahwa variabel ini adalah objek MainActivity. Klik panah pengungkapan untuk melihat variabel anggota objek itu.
5. Klik kanan variabel operandOne dalam panel Variables, dan pilih Set Value. Anda juga bisa menggunakan F2.
6. Ubah nilai operandOne ke 10 dan tekan Return.

7. Modifikasi nilai operandTwo ke 10 dengan cara yang sama dan tekan Return.
8. Klik ikon Resume untuk terus menjalankan aplikasi Anda. Amati bahwa hasil di aplikasi sekarang 20, berdasarkan nilai variabel yang Anda ubah dalam debugger.

9. Dalam aplikasi, klik tombol Add. Eksekusi menghentikan breakpoint.
10. Klik ikon Evaluate Expression , atau pilih Run > Evaluate Expression. Jendela Evaluate Code Fragment muncul. Anda juga bisa mengeklik kanan pada variabel apa pun dan memilih Evaluate Expression.
Gunakan Evaluate Expression untuk menjelajahi status variabel dan objek dalam aplikasi Anda, termasuk metode memanggil pada objek tersebut. Anda bisa memasukkan kode apa pun ke dalam jendela ini.

11. Ketikkan mOperandOneEditText.getHint() ke dalam jendela Expression dan klik Evaluate.
12. Jendela Evaluate Expression diperbarui dengan hasil ekspresi itu. Petunjuk untuk EditText ini adalah string “Type Operand 1”, seperti yang awalnya ditetapkan dalam XML untuk EditText yang dimaksud.

Hasil yang Anda dapat dari mengevaluasi ekspresi didasarkan pada status aplikasi saat ini. Tergantung nilai variabel dalam aplikasi saat Anda mengevaluasi ekspresi, Anda mungkin akan mendapatkan hasil yang berbeda.
Perhatikan bahwa jika Anda menggunakan Evaluate Expression untuk mengubah nilai variabel atau properti objek, Anda akan mengubah status berjalan aplikasi.
13. Klik Close untuk menyembunyikan jendela Evaluate Expression.

Create Mobile App 2

untuk Screen Shoot dapat di akses : https://drive.google.com/file/d/1kKtj_WGCfJ0HX-GnPIQXrbzNZpjrplc6/view?usp=sharing

2.1 Create Start Activity
1.1
1.2 Buat Project seperti sebelumnya

Buatlah Relative Layout seperti exercise sebelumnya

Sesuaikan attribute seperti dibawah ini.

Tarik button ke dalam layout
Tekan Alt-Enter saat kursor ada di “Send” lalu extract dengan nama button_main

Pada relative_layout lakukan reformat code

1.3

Task 2. Create and launch the second activity
Disini kita akan membuat 2 layout yang saling berhubungan.

2.3 Define the layout for the second activity

2.4 Add an intent to the main activity

Task 3. Send data from the main activity to the second activity

3.2 Add a string to the main activity’s intent extras

3.3 Add a TextView to the second activity for the message

3.4 Modify the second activity to get the extras and display the message

ask 4. Return data back to the main activity
4.1 Add an EditText and a Button to the second activity layout

4.2 Create a response intent in the second activity

4.3 Add TextViews to the main activity layout to display the reply

4.4 Get the reply from the intent extra and display it

Hasil :

2.2: Activity Lifecycle and Instance Stat
Disini kita aka mengedit project Two Activity

1.3 Implement lifecycle callbacks in SecondActivity

1.4 Observe the log as the app runs

Task 2. Save and restore the activity instance state
2.1 Save the activity instance state with onSaveInstanceState()

2.2 Restore the activity instance state in onCreate()

2.3: Start Activities with Implicit Intents

Tambahkan resurve pada string.xml seperti dibawah.

Task 2. Implement “open website
2.1 Define the openWebsite method

Task 3. Implement “open location”
3.1 Define the openLocation method

Task 4. Implement share this text
4.1 Implement the shareText method

Task 5. Receive implicit intents
5.1 Create the project and layout

5.2 Modify the Android manifest to add an intent filter

5.3 Process the intent