0% menganggap dokumen ini bermanfaat (0 suara)
112 tayangan25 halaman

Modul Android Untuk Pemula

1. Activity merupakan komponen penting dalam Android yang berfungsi untuk menampilkan antarmuka pengguna ke layar perangkat. Activity memiliki daur hidup (life cycle) dan harus terdaftar di manifest. 2. Ada beberapa state yang dijalani activity seperti created, started, resumed, paused, stopped, destroyed. Pemahaman tentang life cycle penting untuk menangani perubahan state dengan tepat. 3. State activity dapat dijaga dengan menyimpan datanya pada onSaveInstanceState agar tetap terjaga

Diunggah oleh

ari purwanto
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
112 tayangan25 halaman

Modul Android Untuk Pemula

1. Activity merupakan komponen penting dalam Android yang berfungsi untuk menampilkan antarmuka pengguna ke layar perangkat. Activity memiliki daur hidup (life cycle) dan harus terdaftar di manifest. 2. Ada beberapa state yang dijalani activity seperti created, started, resumed, paused, stopped, destroyed. Pemahaman tentang life cycle penting untuk menangani perubahan state dengan tepat. 3. State activity dapat dijaga dengan menyimpan datanya pada onSaveInstanceState agar tetap terjaga

Diunggah oleh

ari purwanto
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 25

Teori

1. Activity merupakan sebuah komponen di Android yang berfungsi untuk menampilkan


user interface ke layar handset Android pengguna. Ini seperti pada saat Anda melihat
daftar percakapan pada aplikasi chat atau daftar email pada aplikasi Gmail di ponsel
Android Anda.
2. Umumnya dalam sebuah aplikasi terdapat lebih dari satu activity yang saling
terhubung dengan tugas yang berbeda-beda.
3. Activity merupakan salah satu komponen penting Android yang memiliki daur hidup
(life cycle) dalam sebuah stack pada virtual sandbox yang disiapkan oleh Dalvik
Virtual Machine (DVM) atau Android Runtime (ART) yang bersifat last in first out.
4. Pada implementasinya, activity selalu memiliki satu layout user interface dalam
bentuk berkas xml.
5. Suatu aplikasi Android bisa memiliki lebih dari satu activity dan harus terdaftar di
berkas AndroidManifest.xml sebagai sub aplikasi.
6. Sebuah class Java dinyatakan sebuah activity jika mewarisi (extends)
superclass Activity atau turunannya seperti AppCompatActivity dan
FragmentActivity.

Untuk lebih mendalami activity, kami menyarankan Anda untuk membaca referensi berikut :

• Activities
Activity Lifecycle

Developer yang baik harus mengetahui secara detail tentang life cycle sebuah activity.
Terutama untuk melakukan aksi yang tepat, saat terjadi perubahan state activity. Callback
methods yang ada dapat digunakan untuk melakukan beragam proses terkait state dari
activity. Misalnya melakukan semua inisialisasi komponen di onCreate(), melakukan
disconnect terhadap koneksi ke server pada onStop() atau onDestroy() dan lain sebagainya.

Pemahaman yang baik tentang daur hidup activity akan membuat implementasi rancangan
aplikasi Anda menjadi lebih baik. Hal ini juga akan meminimalisir terjadinya error/bug/force
close yang tidak diinginkan.
Last In, First Out (LIFO)

Gambar 1 Gambar 2 Gambar 3


Aktif: Activity 1 Aktif: Activity 2 Activity 1

onCreate() → Stack append: Activity 2 [ onStop() → onRestart() → onStart() →


onStart() → onResume() ] onResume()
onResume()
Aksi: Klik Aksi: Klik Hardware Back Button Aktif: Activity 1
Button1
(Pindah)
Stack append: Activity 2 [ finish() ]
Activity 1 [
onStop() ] Stack pop: Activity 2 [
onDestroy() ]
1. Gambar 1
Jika Anda memiliki sebuah aplikasi yang terdiri dari 2 activity, maka activity pertama
akan dijalankan setelah pengguna meluncurkan aplikasi melalui ikon aplikasi di layar
device. Activity yang ada saat ini berada pada posisi activity running setelah melalui
beberapa state onCreate (created) → onStart (started) → onResume (resumed) dan
masuk ke dalam sebuah stack activity.
Bila pada activity pertama Anda menekan sebuah tombol untuk menjalankan activity
kedua, maka posisi state dari activity pertama berada pada posisi stop. Saat itu,
callback onStop() pada activity pertama akan dipanggil.
Ini terjadi karena activity pertama sudah tidak berada pada layar foreground / tidak
lagi ditampilkan. Semua informasi terakhir pada activity pertama akan disimpan
secara otomatis.
Sementara itu, activity kedua masuk ke dalam stack dan menjadi activity terakhir
yang masuk.

2. Gambar 2

Activity kedua sudah muncul di layar sekarang. Ketika Anda menekan tombol back
pada physical button menu utama atau menjalankan metode finish(), maka activity
kedua Anda akan dikeluarkan dari stack.
Pada kondisi di atas, state activity kedua akan berada pada destroy. Oleh karenanya,
metode onDestroy() akan dipanggil.
Kejadian keluar dan masuk stack pada proses di atas menandakan sebuah model Last
In, First Out. Activity kedua menjadi yang terakhir masuk stack (Last In) dan yang
paling pertama keluar dari stack (First Out).

3. Gambar 3
Activity Pertama akan dimunculkan kembali di layar setelah melalui beberapa state
dengan rangkaian callback method yang terpanggil, onStop → onRestart → onStart
→ onResume.

Detailnya dapat Anda baca disini :

• LifeCycle

Saving Activity State

Ketika sebuah activity mengalami pause kemudian resume, maka state dari sebuah activity
tersebut dapat terjaga. Sebabnya, obyek activity masih tersimpan di memory sehingga dapat
dikembalikan state-nya.

Dengan menjaga state dari activity, maka ketika activity tersebut ditampilkan, kondisinya
akan tetap sama dengan kondisi sebelumnya.
Akan tetapi ketika sistem menghancurkan activity untuk keperluan memori misalnya karena
memori habis, maka obyek activity dihancurkan. Alhasil, ketika activity ingin ditampilkan
kembali diperlukan proses re-create activity yang dihancurkan tadi.

Kejadian di atas adalah hal yang lumrah terjadi. Oleh karena itu, perubahan yang terjadi pada
activity perlu disimpan terlebih dahulu sebelum ia dihancurkan. Disinilah metode
onSaveInstanceState() digunakan.

Dalam onSaveInstanceState terdapat bundle yang dapat digunakan untuk menyimpan


informasi. Informasi dapat disimpan dengan memanfaatkan fungsi seperti putString() dan
putInt().

Ketika activity di-restart, bundle akan diberikan kepada metode onCreate dan
onRestoreInstanceState. Bundle tersebut akan dimanfaatkan untuk mengembalikan kembali
perubahan yang telah terjadi sebelumnya.

Proses penghancuran activity dapat juga terjadi ketika terdapat perubahan konfigurasi seperti
perubahan orientasi layar (portrait-landscape), keyboard availability, dan perubahan bahasa.
Penghancuran ini akan menjalankan callback method onDestroy dan kemudian menjalankan
onCreate. Penghancuran ini dimaksudkan agar activity dapat menyesuaikan diri dengan
konfigurasi baru yang muncul pada kejadian-kejadian sebelumnya.

Hal yang perlu diingat ketika menggunakan onSaveInstanceState adalah untuk tidak
menyimpan data yang besar pada bundle. Contohnya, hindari penyimpanan data bitmap pada
bundle. Bila data pada bundle berukuran besar, proses serialisasi dan deserialisasi akan
memakan banyak memori
Activity Latihan Aplikasi Sederhana

Tujuan

Codelab ini bertujuan untuk mengimplementasikan komponen activity pada aplikasi pertama
yang Anda bangun. Harapannya aktifitas ini dapat memberi gambaran yang jelas tentang cara
kerja activity.

Logika Dasar

Melakukan input ke dalam obyek TextBox → melakukan validasi input → melakukan


perhitungan volume balok ketika tombol hitung diklik

Codelab Perhitungan Volume

1. Buat proyek baru dengan klik File → New → New Project pada Android Studio
Anda.

2. Setelah muncul jendela Create New Project, atur nama aplikasi dan domain
perusahaan / website Anda. Sebaiknya jangan sama dengan apa yang ada dicontoh.
Dan jangan lupa pula untuk menentukan lokasi proyek.

3. Kemudian pilih tipe peranti (device) untuk aplikasi beserta target minimum SDK yang
akan digunakan. Pilihan target Android SDK akan mempengaruhi banyaknya peranti
yang dapat menggunakan aplikasi. Di sini kita memilih tipe peranti Phone and Tablet
dan nilai minimum SDK kita pasang ke Level 15 (Ice Cream Sandwich). Klik
Next untuk melanjutkan.

4. Pada bagian ini kita akan memilih tipe activity awal dari template yang telah
disediakan. Saat ini Android Studio sudah menyediakan berbagai macam template
activity dari yang paling sederhana hingga yang paling kompleks seperti :
Add No Activity : Tidak ada activity yang ditambahkan
Basic Activity : Activity dengan template komponen material
design seperti FloatingActionButton
Empty Activity : Activity dalam bentuk yang paling dasar
Fullscreen Activity : Activity fullscreen tanpa status bar
Google AdMob Ads Activity : Activity dengan konfigurasi default iklan Admob
Google Maps Activity : Activity dengan menyediakan konfigurasi dasar
Google Maps
Login Activity : Activity untuk halaman login
Master / Detail Flow : Activity yang diperuntukan untuk alur aplikasi
master detail pada peranti tablet
Navigation Drawer Activity : Activity dengan tampilan side bar menu
Scrolling Activity : Activity dengan kemampuan scroll konten
didalamnya secara vertikal
Settings Activity : Activity yang diperuntukan untuk konfigurasi
aplikasi
Tabbed Activity : Activity yang diperuntukan untuk menampilkan
lebih dari satu tampilan, dapat digeser ke kanan dan ke kiri (swipe) dan dengan
menggunakan komponen viewpager

Saat ini kita pilih tipe empty activity, klik Next untuk melanjutkan.

5. Selanjutnya, tentukan nama activity pertama kita, saat ini kita biarkan pada kondisi
apa adanya. Ingat, jika suatu saat nanti kita ingin melakukan penambahan activity ,
maka sebaiknya nama untuk activity tersebut disamakan dengan nama kelasnya dan
diakhiri dengan activity . Misal: ProfileActivity, SettingsActivity dan lain sebagainya.
Klik Finish untuk menyelesaikan.
6. Selamat! Anda telah berhasil membuat sebuah proyek baru Android. Biasanya,
tampilan layar Anda akan seperti contoh di bawah ini:

7. Di sebelah kanan anda adalah workspace dimana Activity anda berada dan bernama
MainActivity.java dengan layoutnya activity_main.xml. Di sebelah kiri Anda terdapat
struktur proyek, di mana nanti kita akan banyak menambahkan berbagai komponen
baru, asset dan library. Untuk lebih mengenal Android Studio lebih dalam silakan
baca materi ini https://developer.android.com/studio/intro/index.html

Selanjutnya kita akan mulai melakukan pengkodean aplikasi atau lebih enaknya disebut
ngoding.

Berikut flow umumnya.

1. Ngoding Layout untuk user interface aplikasi


2. Ngoding Activity untuk menambahkan logika aplikasi

Untuk mengoptimalkan proses pengetikan, Anda dapat memanfaatkan code completion


dengan menekan ctrl + space. Android Studio juga akan meng-import package dari
komponen yang digunakan.
Dilarang Keras untuk copy - paste! Ngoding pelan-pelan akan membuat Anda lebih jago di
masa depan.

Selamat ngoding!

Menambahkan Code Sederhana pada Layout Activity

1. Silakan klik tab file activity_main.xml pada


workspace Anda(res/Layout/activity_main.xml), dan tambahkan baris-baris berikut:
1. <LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
2. xmlns:tools="http://schemas.android.com/tools"
3. android:layout_width="match_parent"
4. android:layout_height="match_parent"
5. android:paddingBottom="@dimen/activity_vertical_margin"
6. android:paddingLeft="@dimen/activity_horizontal_margin"
7. android:paddingRight="@dimen/activity_horizontal_margin"
8. android:paddingTop="@dimen/activity_vertical_margin"
9. android:orientation="vertical"
10. tools:context="com.dicoding.associate.barvolume.MainAct
ivity">
11. <TextView
12. android:layout_width="match_parent"
13. android:layout_height="wrap_content"
14. android:text="Panjang"
15. android:layout_marginBottom="@dimen/activity_vertic
al_margin"/>
16. <EditText
17. android:id="@+id/edt_length"
18. android:layout_width="match_parent"
19. android:layout_height="wrap_content"
20. android:inputType="numberDecimal"
21. android:lines="1"
22. android:layout_marginBottom="@dimen/activity_vertic
al_margin"/>
23. <TextView
24. android:layout_width="match_parent"
25. android:layout_height="wrap_content"
26. android:text="Lebar"
27. android:layout_marginBottom="@dimen/activity_vertic
al_margin"/>
28. <EditText
29. android:id="@+id/edt_width"
30. android:layout_width="match_parent"
31. android:layout_height="wrap_content"
32. android:inputType="numberDecimal"
33. android:lines="1"
34. android:layout_marginBottom="@dimen/activity_vertic
al_margin"/>
35. <TextView
36. android:layout_width="match_parent"
37. android:layout_height="wrap_content"
38. android:text="Tinggi"
39. android:layout_marginBottom="@dimen/activity_vertic
al_margin"/>
40. <EditText
41. android:id="@+id/edt_height"
42. android:layout_width="match_parent"
43. android:layout_height="wrap_content"
44. android:inputType="numberDecimal"
45. android:lines="1"
46. android:layout_marginBottom="@dimen/activity_vertic
al_margin"/>
47. <Button
48. android:id="@+id/btn_calculate"
49. android:layout_width="match_parent"
50. android:layout_height="wrap_content"
51. android:text="Hitung"
52. android:layout_marginBottom="@dimen/activity_vertic
al_margin"/>
53. <TextView
54. android:id="@+id/tv_result"
55. android:layout_width="match_parent"
56. android:layout_height="wrap_content"
57. android:text="Hasil"
58. android:gravity="center"
59. android:textSize="24sp"
60. android:textStyle="bold"
61. android:layout_marginBottom="@dimen/activity_vertic
al_margin"/>
62. </LinearLayout>

2. Akan muncul warning pada atribut android:text pada layout tersebut. Ini karena kita
melakukan hardcoding pada nilai string-nya. Mari kita hilangkan code warning
tersebut dengan menekan Alt+Enter pada attribut android:text.
Akan muncul dialog seperti ini, pilihlah extract string resource.
3. Kemudian akan muncul dialog seperti di bawah ini. Sesuaikan dengan nama yang ada.

4. Fungsi extract string resource akan secara otomatis menambahkan nilai dari
android:text ke dalam berkas res → values → strings.xml. Lakukan hal yang sama
pada view lainnya hingga tidak ada warning lagi. Jika kita buka berkas strings.xml,
maka isinya akan menjadi seperti ini:
1. <resources>
2. <string name="app_name">BarVolume</string>
3. <string name="lebar">Lebar</string>
4. <string name="tinggi">Tinggi</string>
5. <string name="hitung">Hitung</string>
6. <string name="hasil">Hasil</string>
7. <string name="panjang">panjang</string>
8. </resources>

5. Jika terjadi kesalahan pada atribut dimens, maka kita perlu menambahkan berkas
dimens.xml di dalam res → values → dimens.xml. Kesalahan ini disebabkan karena
pada Android Studio 2.3, berkas dimens.xml sudah tidak dibuat secara otomatis.
Langsung saja tambahkan dengan cara Klik Kanan pada directory res. Akan muncul
dialog seperti ini.
6. Kemudian isi sesuai di bawah ini.

7. Jika berkas dimens.xml sudah dibuat, sesuaikan isinya menjadi seperti berikut.
1. <resources>
2. <!-- Default screen margins, per the Android Design
guidelines. -->
3. <dimen name="activity_horizontal_margin">16dp</dimen>
4. <dimen name="activity_vertical_margin">16dp</dimen>
5. </resources>

Menambahkan Kode Logika Sederhana pada MainActivity

1. Selanjutnya setelah selesai, lanjutkan dengan membuka berkas MainActivity.java dan


lanjutkan ngoding baris-baris dibawah ini.
1. public class MainActivity extends AppCompatActivity implements
View.OnClickListener{
2. private EditText edtWidth, edtHeight, edtLength;
3. private Button btnCalculate;
4. private TextView tvResult;
5.
6. @Override
7. protected void onCreate(Bundle savedInstanceState) {
8. super.onCreate(savedInstanceState);
9. setContentView(R.layout.activity_main);
10. edtWidth = (EditText)findViewById(R.id.edt_width);
11. edtHeight =
(EditText)findViewById(R.id.edt_height);
12. edtLength =
(EditText)findViewById(R.id.edt_length);
13. btnCalculate =
(Button)findViewById(R.id.btn_calculate);
14. tvResult = (TextView)findViewById(R.id.tv_result);
15. btnCalculate.setOnClickListener(this);
16. }
17.
18. @Override
19. public void onClick(View v) {
20. if (v.getId() == R.id.btn_calculate){
21. String length =
edtLength.getText().toString().trim();
22. String width =
edtWidth.getText().toString().trim();
23. String height =
edtHeight.getText().toString().trim();
24. boolean isEmptyFields = false;
25. if (TextUtils.isEmpty(length)){
26. isEmptyFields = true;
27. edtLength.setError("Field ini tidak boleh
kosong");
28. }
29. if (TextUtils.isEmpty(width)){
30. isEmptyFields = true;
31. edtWidth.setError("Field ini tidak boleh
kosong");
32. }
33. if (TextUtils.isEmpty(height)){
34. isEmptyFields = true;
35. edtHeight.setError("Field ini tidak boleh
kosong");
36. }
37. if (!isEmptyFields) {
38. double l = Double.parseDouble(length);
39. double w = Double.parseDouble(width);
40. double h = Double.parseDouble(height);
41. double volume = l * w * h;
42. tvResult.setText(String.valueOf(volume));
43. }
44. }
45. }
46. }

Jika terdapat baris merah seperti ini :

Jangan khawatir! Silakan klik di atas baris merah tersebut dan klik pada ikon bola
lampu. Atau dengan tekan tombol Alt + Enter lalu pilih implements method.
2. Setelah selesai, silakan jalankan aplikasi dengan memilih menu Run → Run ‘app’
dari menu bar. Kemudian ada pilihan seperti ini.

Itu tandanya adb (Android Debugger) pada peranti yang Anda punya telah terhubung
dengan Android Studio. Jika Anda tidak memiliki peranti, maka Anda dapat
menggunakan emulator. Ikuti materinya disini
https://developer.android.com/studio/run/managing-avds.html.

Kami merekomendasikan Anda menggunakan peranti Android sewaktu


mengembangkan aplikasi. Selain karena beban memori pada peranti Anda akan jadi
lebih rendah, pendekatan ini juga akan memungkinkan Anda untuk merasakan
bagaimana aplikasi berjalan di device sebenarnya.

Pilih OK untuk menjalankan dan tunggu hingga proses building dan instalasi APK
selesai. Jika sudah, seharusnya hasilnya akan seperti ini. Silakan masukan nilai
panjang, lebar dan tinggi kemudian tekan tombol Hasil dan hasilnya akan ditampilkan
di obyek textview tvHasil.
3. Apakah kita sudah selesai?
Belum! Masih ada yang kurang. Ketika nilai luas sudah dihitung dan kemudian terjadi
pergantian orientasi pada peranti, maka hasil perhitungan tadi akan hilang.
Tambahkan beberapa baris berikut pada MainActivity.java.
1. private static final String STATE_HASIL = "state_hasil";
2.
3. @Override
4. protected void onSaveInstanceState(Bundle outState) {
5.
6. outState.putString(STATE_HASIL,
tvResult.getText().toString());
7. super.onSaveInstanceState(outState);
8. }

Kemudian tambahkan juga beberapa baris berikut pada baris terakhir metode
onCreate.

9. if (savedInstanceState != null){
10. String hasil =
savedInstanceState.getString(STATE_HASIL);
11. tvResult.setText(hasil);
12. }
4. Silakan jalankan kembali aplikasinya. Ulangi proses perhitungan seperti sebelumnya.
Kemudian ganti orientasi peranti Anda. Jika sudah benar maka hasil perhitungan tidak
akan hilang.
Bedah Kode

Pembahasan tentang layout xml

1. xml version="1.0" encoding="utf-8"?>

Baris ini mengidentifikasi bahwa berkas ini berformat xml.

1. xmlns:android="http://schemas.android.com/apk/res/android"
2. xmlns:tools="http://schemas.android.com/tools"

Kode di atas menandakan namespace yang digunakan dalam keseluruhan berkas xml ini.

Disini kita menggunakan beberapa komponen user interface yang disebut view. Diantaranya:

TextView : Komponen view untuk menampilkan teks ke layar

EditText : Komponen view untuk memberikan input teks

Button : Komponen view untuk melakukan sebuah aksi klik

LinearLayout : Komponen view bertipe viewgroup yang menjadi parent dari semua sub
komponen view (sub view) di dalamnya. Komponen ini bersifat sebagai kontainer untuk
komponen lain dengan orientasi secara vertikal atau horizontal.

Cara membaca :

1. <TextView
2. android:layout_width="match_parent"
3. android:layout_height="wrap_content"
4. android:text="Panjang"
5. android:layout_marginBottom="@dimen/activity_vertical_margin"/>

Komponen diatas adalah sebuah TextView. Perhatikan gambar di bawah ini, warna ungu
menandakan namespace yang digunakan; warna biru adalah atribut dari komponen dan warna
hijau adalah nilai dari atribut. Penjelasannya seperti dibawah ini:
match_parent: Ini berarti bahwa ukuran dimensi sebuah View disesuaikan dengan ukuran
layar secara horizontal jika pada layout_width dan vertikal jika pada layout_height.

wrap_content : Ini berarti bahwa ukuran dimensi sebuah View disesuaikan dengan ukuran
konten didalamnya baik secara horizontal pada layout_width dan vertikal jika pada
layout_height.

@dimen/activity_vertical_margin: Value activity_vertical_margin berasal dari


berkas dimens.xml yang bisa Anda lihat dengan cara menekan dan tahan tombol Ctrl (atau
command) + arahkan kursor keatasnya dan kemudian klik sekali. Penggunaan centralize
resource value akan memudahkan Anda sewaktu mengembangkan aplikasi Android. Cara
tersebut digunakan agar Anda tidak menulis nilai yang sama berulang-ulang.

Apa itu ‘@+id/’ ?

Salah satu contoh penerapan penggunaan @+id/ sebagai berikut:

1. <Button
2. android:id="@+id/btn_calculate"
3. android:layout_width="match_parent"
4. android:layout_height="wrap_content"
5. android:text="Hitung"
6. android:layout_marginBottom="@dimen/activity_vertical_margin"/>

Penjelasannya sebagai berikut:

1. android:id="@+id/btn_calculate"
Jika kita memberikan id pada sebuah view maka kita telah memberikan identifier untuk
view tersebut. Pemberian id ini dimaksudkan agar kita bisa melakukan
manipulasi/pengendalian pada level logic di komponen seperti activity atau fragment.

Id di atas akan diciptakan di berkas R.java dan disimpan dalam bentuk hexa bertipe data
integer public static final int btn_calculate=0x7f0b0057.

Acuan untuk menyusun tampilan pada relativelayout akan dibahas pada modul selanjutnya.
Pembahasan tentang Logika Kode

1. public class MainActivity extends AppCompatActivity

Menandakan bahwa kelas Java di atas merupakan sebuah activity karena inherit ke
superclass bernama AppCompatActivity.

1. implements View.OnClickListener

Ini adalah listener yang kita implementasikan untuk memantau kejadian klik pada komponen
tombol (button).

Jika terdapat baris merah seperti ini :

Jangan khawatir. Silakan klik di atas baris merah tersebut dan klik pada ikon bola lampu.
Anda juga dapat menekan tombol (Alt + Enter) lalu pilih implements method.

1. private EditText edtWidth, edtHeight, edtLength;


2. private Button btnCalculate;
3. private TextView tvResult;

Kode di atas mendeklarasikan semua komponen view yang akan dimanipulasi. Kita
deklarasikan secara global agar bisa dikenal di keseluruhan bagian kelas.

1. @Override
2. protected void onCreate(Bundle savedInstanceState) {
3. super.onCreate(savedInstanceState);
4. setContentView(R.layout.activity_main);
5. edtWidth = (EditText)findViewById(R.id.edt_width);
6. edtHeight = (EditText)findViewById(R.id.edt_height);
7. edtLength = (EditText)findViewById(R.id.edt_length);
8. btnCalculate = (Button)findViewById(R.id.btn_calculate);
9. tvResult = (TextView)findViewById(R.id.tv_result);
10. btnCalculate.setOnClickListener(this);
11. }

Metode onCreate() merupakan metode utama pada activity. Di sinilah kita dapat mengatur
layout xml. Semua proses inisialisasi komponen yang digunakan akan dijlankan disini.. Pada
metode ini kita casting semua komponen view yang kita telah deklarasikan sebelumnya, agar
dapat kita manipulasi.

1. setContentView(R.layout.activity_main);

Maksud baris diatas adalah kelas MainActivity akan menampilkan tampilan yang berasal dari
layout activity_main.xml.

1. edtWidth = (EditText)findViewById(R.id.edt_width);

Maksud dari baris diatas adalah obyek edittext edtWidth disesuaikan (cast) dengan komponen
edittext ber-ID edt_width di layout xml melalui metode findViewById().

1. btnCalculate.setOnClickListener(this);

Kita memasang event click listener untuk obyek btnCalculate sehingga sebuah aksi dapat
dijalankan ketika obyek tersebut diklik. Keyword this merujuk pada obyek Activity saat ini
yang telah mengimplementasikan listener OnClickListener sebelumnya.

Pembahasan saveInstanceState

1. @Override
2. protected void onSaveInstanceState(Bundle outState) {
3.
4. outState.putString(STATE_HASIL, tvResult.getText().toString());
5. super.onSaveInstanceState(outState);
6. }

Perhatikan metode onSaveInstanceState. Di dalam metode tersebut, hasil perhitungan yang


ditampilkan pada tvResult dimasukkan pada bundle kemudian disimpan isinya. Setelah
onSaveInstanceState berhasil dijalankan, maka activity akan melakukan proses onDestroy
dan menjalankan kembali onCreate secara otomatis.

1. if (savedInstanceState != null){
2. String hasil = savedInstanceState.getString(STATE_HASIL);
3. tvResult.setText(hasil);
4. }

Pada onCreate inilah kita menggunakan nilai bundle yang telah kita simpan sebelumnya pada
onSaveInstanceState. Nilai tersebut kita isikan kembali pada tvResult.
Selamat! Anda telah berhasil membuat dan menjalankan latihan Android pertama di peranti
atau emulator. Silakan lanjut ke codelab berikutnya.

Referensi:

Dicoding.com

Anda mungkin juga menyukai