Activity Pada Pemrograman Android

Activity adalah komponen yang dapat dilihat oleh pengguna, sehingga mereka dapat berinteraksi dengan aplikasi. Bila dengan dibandingkan dengan aplikasi web dan desktop, aktivity sama seperti halaman dan form. Activity tidak hidup abadi selamanya, dia bisa diciptakan dan dihancurkan. Activity memiliki siklus hidup (lifecycle) yang merupakan kondisi yang akan dialami saat diciptakan sampai dihancurkan. Ada beberapa kondisi yang akan dialami oleh Activity seperti yang tergambar pada flow chart berikut ini.


Penjelasan :
  • onCreate() adalah kondisi awal saat Activity baru diciptakan, biasanya dilakukan inisialisasi pada tahapan ini.
  • onStart() adalah saat Activity dimulai
  • onResume() adalah saat Activity dibuka kembali, biasanya dieksekusi setelah onPause()
  • onPause() akan dipanggil saat ada Activity lain yang terbuka 
  • onStop() adalah kondisi saat Activity tidak ditampilkan dilayar (biasanya saat pengguna menekan tombol Home)
  • onRestart() adalah kondisi saat Activity kembali dibuka oleh pengguna
  • onDestroy() adalah kondisi saat Activity dihancurkan pada memory


LATIHAN ACTIVITY

Membuat  project baru dengan klik File -> New -> New Project... pada Android Studio anda.







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. Saat ini kita pilih tipe Empty Activity, Klik Next untuk melanjutkan.












Setelah muncul jendela Configure your Project silahkan anda isi. Kemudian pilih tipe  minimum SDK yang akan digunakan. Disini saya akan memilih nilai minimum SDK  ke level 21(Lollipop). Lalu Klik Finish.












Biasanya, tampilan layar anda akan seperti contoh dibawah ini. Di sebelah kanan anda adalah workspace dimana Activity anda akan berada dan bernama MainActivity.java dengan layoutnya activity_main.xml. Disebelah kiri anda terdapat struktur project, dimana nanti kita akan banyak menambahkan berbagai komponen baru, asset dan library. 








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 akan meng-import package dari komponen yang digunakan.

Selamat Ngoding 😊
Menambahkan Code Sederhana pada Layout Activity
Silahkan pilih tab berkas activity_main.xml pada workspace Anda (res/layout/activity_main.xml) 













Dan Pastikan project window pada pilihan Android, seperti gambar dibawah ini : 












Maka akan ada tampilan seperti ini, kemudian pilih metode text. 











Tambahkan baris-baris berikut : 
(Perlu diperhatikan root layout yang dipakai disini adalah LinierLayout. Jika Anda menggunakan Android Studio versi 3 maka secara default yang dipakai adalah ConstraintLayout, jadi agar sesuai dengan latihan ini tinggal diganti menjadi LinierLayout).

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"   
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:orientation="vertical"
    tools:context="com.dicoding.picodiploma.barvolume.MainActivity">
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Panjang" />
    <EditText
        android:id="@+id/edt_length"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="numberDecimal"
        android:lines="1" />
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Lebar" />
    <EditText
        android:id="@+id/edt_width"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="numberDecimal"
        android:lines="1" />
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Tinggi" />
    <EditText
        android:id="@+id/edt_height"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="numberDecimal"
        android:lines="1" />
    <Button
        android:id="@+id/btn_calculate"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Hitung" />
    <TextView
        android:id="@+id/tv_result"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="Hasil"
        android:textSize="24sp"
        android:textStyle="bold" />
</LinearLayout>


Jika terjadi kesalahan pada atribut dimens, maka kita perlu mengubah berkas dimens.xml didalam res -> values -> dimens.xml. Kesalahan ini disebabkan karena pada Android Studio 3, berkas dimens.xml sudah tidak dibuat secara otomatis.





Langsung saja tambahkan dengan cara klik kanan pada directory res. Akan muncul dialog seperti ini :










Kemudian isi sesuai dibawah ini











 

Jika berkas dimens.xml sudah dibuat, sesuaikan isinya menjadi seperti berikut

<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="activity_horizontal_margin">16dp</dimen>
<dimen name="activity_vertical_margin">8dp</dimen>
</resources>

Menambahkan Kode Logika Sederhana pada MainActivity
Selanjutnya setelah selesai, lanjutkan dengan membuka berkas MainActivity.java dan lanjutkan ngoding baris-baris dibawah ini.
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    EditText edtWidth, edtHeight, edtLength;
    Button btnCalculate;
    TextView tvResult;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        edtWidth = findViewById(R.id.edt_width);
        edtHeight = findViewById(R.id.edt_height);
        edtLength = findViewById(R.id.edt_length);
        btnCalculate = findViewById(R.id.btn_calculate);
        tvResult = findViewById(R.id.tv_result);

        btnCalculate.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        if (v.getId() == R.id.btn_calculate) {
            String inputLength = edtLength.getText().toString().trim();
            String inputWidth = edtWidth.getText().toString().trim();
            String inputHeight = edtHeight.getText().toString().trim();

            boolean isEmptyFields = false;
            boolean isInvalidDouble = false;

            if (TextUtils.isEmpty(inputLength)) {
                isEmptyFields = true;
                edtLength.setError("Field ini tidak boleh kosong");
            }

            if (TextUtils.isEmpty(inputWidth)) {
                isEmptyFields = true;
                edtWidth.setError("Field ini tidak boleh kosong");
            }

            if (TextUtils.isEmpty(inputHeight)) {
                isEmptyFields = true;
                edtHeight.setError("Field ini tidak boleh kosong");
            }

            Double length = toDouble(inputLength);
            Double width = toDouble(inputWidth);
            Double height = toDouble(inputHeight);

            if (length == null) {
                isInvalidDouble = true;
                edtLength.setError("Field ini harus berupa nomer yang valid");
            }

            if (width == null) {
                isInvalidDouble = true;
                edtWidth.setError("Field ini harus berupa nomer yang valid");
            }

            if (height == null) {
                isInvalidDouble = true;
                edtHeight.setError("Field ini harus berupa nomer yang valid");
            }

            if (!isEmptyFields && !isInvalidDouble) {
                double volume = length * width * height;
                tvResult.setText(String.valueOf(volume));
            }
        }
    }

    Double toDouble(String str) {
        try {
            return Double.valueOf(str);
        } catch (NumberFormatException e) {
            return null;
        }
    }

}

Setelah selesai, silahkan 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.











 
 
  • 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 Hitung dan hasilnya akan ditampilkan di obyek textview tvHasil












  • Apakah kita sudah selesai?
    Belum! Masih ada yang kurang. Ketika nilai volume sudah dihitung dan kemudian terjadi pergantian orientasi (portrait-landscape) pada peranti, maka hasil perhitungan tadi akan hilang. 
  • Untuk mengatasinya tambahkan beberapa baris berikut pada MainActivity.java

  • Kemudian tambahkan juga beberapa baris berikut pada baristerakhir metode onCreate.






  • Silakan jalankan kembali aplikasinya. Ulangi proses perhitungan seperti sebelumnya. Kemudian ganti orientasi peranti Anda. Jika sudah benar maka hasil perhitungan tidak akan hilang. 
  • Komentar