Anda di halaman 1dari 29

PERTEMUAN VII

PEMOGRAMAN MOBILE (PM)

FADIL INDRA SANJAYA, S.Kom., M.Kom.


UNIVERSITAS TEKNOLOGI YOGYAKARTA
2020
Activity Lifecycle
Introduction
• Selama aplikasi berjalan, sebuah Activity dalam melalui salah satu dari
keempat status berikut:
Activity Lifecycle
Method dalam lifecycle
• onCreate()
Di-method ini Activity sudah dimulai tapi belum terlihat oleh pengguna. Inisialisasi
sebagian besar dimulai di sini. Misalnya memanggail setContentView() untuk membaca
layout, membaca View, dll.
• onStart()
Activity sudah terlihat tapi belum bisa berinteraksi. Method ini jarang dipakai, tapi bisa
sangat berguna untuk mendaftarkan sebuah BroadcastReceiver untuk mengamati
perubahan yang dapat mempengaruhi UI.

• onResume()
Activity sudah terlihat dan pengguna sudah dapat berinteraksi. Di sini adalah tempat
terbaik untuk menjalankan animasi, membuka akses seperti camera, mengupdate UI, dll.
Method dalam lifecycle (Cont.)
• onPause()
Kebalikan dari onResume(). Activity sudah akan bersiap-siap meninggalkan layar (masih terlihat) dan
sudah tidak berinteraksi dengan pengguna. Biasanya bila perlu melakukan undo untuk pekerjaan yang
dilakukan di onResume() kita lakukan di sini.

• onStop()
Kebalikan dari onStart() Activity sudah tidak terlihat. Biasanya kita melakukan undo untuk pekerjaan
yang dilakukan di dalam onStart().

• onDestroy()
Kebalikan dari onCreate(). Method ini dapat terpanggil karena memanggil method finish() atau karena
sistem membutuhkan memori lebih. Di dalam onDestroy() kita biasanya membersihkan proses-proses
yang ada di belakang layar. Misalnya pengunduhan data dari internet yang mungkin masih berjalan
jika tidak dihentikan di onDestroy().
Method dalam lifecycle (Cont.)
• onRestart()
Dipanggil saat activity sudah melalui onStop() tapi akan diaktifkan lagi. Method
ini jarang di implementasi.
Fragment
What is a Fragment?
• Fragment adalah sebuah reuseable class yang mengimplement
beberapa fitur sebuah Activity. Fragment biasanya dibuat sebagai
bagian dari suatu antarmuka. Sebuah fragment harus berada di dalam
sebuah activity, mereka tidak dapat berjalan sendiri tanpa adanya
activity tempat mereka menempel.
Memahami Fragment
Berikut ini beberapa hal yang perlu dipahami tentang fragment:
• Sebuah Fragment merupakan kombinasi sebuah layout XML dan kelas
java yang mirip dengan sebuah Activity.
• Dengan menggunakan support library, fragment dapat mendukung
hampir semua versi Android.
• Fragment dapat dipakai berulang kali didalam activity.
• Fragment merupakan komponen utuh yang memiliki view, event,
dan logic (meskipun tetap membutuhkan sebuah fragment agar dapat
bekerja).
Peran Fragment
Dalam arsitektur berorientasi fragment, activity menjadi navigational
container yang bertugas untuk melakukan navigasi ke activity lain,
menampilkan fragment dan mengirim data.
Pentingnya Sebuah Fragment
• Ada banyak kasus yang dapat diselesaikan menggunakan fragment, namun yang
paling umum adalah:
• Penggunaan Komponen View dan Logic Berulang Kali - Fragment dapat dipakai untuk
menampilkan data atau melakukan event tertentu dibeberapa activity berbeda.
• Dukungan Untuk Tablet - Dibeberapa aplikasi, versi tablet dari sebuah activity
memberikan layout yang berbeda dari versi handphone yang juga berbeda dari versi
TV. Fragment memungkinkan activity untuk menggunakan fragment dalam membuat
antarmuka sesuai dengan perangkat yang membukanya.
• Orientasi Layar - Seringkali dalam aplikasi, versi portrait dan landscape sebuah aplikasi
memiliki layout yang berbeda. Fragment memungkinkan kedua orientasi tersebut
untuk menggunakan tampilan yang berbeda menggunakan elemen yang sama.
Mengorganisasi Kode Fragment
Dalam aplikasi yang menggunakan banyak fragment, kita perlu selalu
ingat untuk mengorganisasikan kode kita agar mengikuti best practice.
Di dalam sebuah aplikasi yang memakai banyak fragment, kita harus
selalu ingat fungsi dari perpindahan activity.
Activity vs Fragment
• Activity adalah navigation controller yang bertugas untuk:
• Pindah ke activity lain melalui intent.
• Menampilkan komponen navigasi seperti navigation drawer atau 
viewpager.
• Menampilkan dan menyembunyikan fragment tertentu menggunakan
fragment manager.
• Menerima data dari intent yang mengirim data antar fragment.
Activity vs Fragment (Cont.)
• Fragments adalah content controllers dan memiliki view, layout, serta
event logic sendiri:
• Layout dan view menampilkan konten aplikasi yang relevan.
• Melakukan management view seperti visibility atau error handling.
• Memulai network request melalui objek klien.
• Menerima dan menyimpan data dari atau ke database.
Membuat Sebuah Fragment
• Sebuah fragment, seperti activity, memiliki XML layout-nya sendiri
dan sebuah kelas java sebagai controller dari Fragment tersebut.
• Layout XML yang dimiliki oleh fragment, sama seperti layout-layout
lainnya dan bisa memiliki nama apa saja (selama memiliki format yang
ditentukan). Anggap kita memiliki layout sebagai berikut:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView" />

<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button" />

</LinearLayout>
import android.support.v4.app.Fragment;

public class FooFragment extends Fragment {


// Method onCreateView dipanggil saat Fragment harus
menampilkan layoutnya // dengan membuat layout tersebut
secara manual lewat objek View atau dengan // membaca
file XML
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup
parent, Bundle savedInstanceState) {
// Layout tampilan untuk fragment ini
return inflater.inflate(R.layout.fragment_foo, parent, false);
}

// Method ini dipanggil sesaat setelah onCreateView().


// Semua pembacaan view dan penambahan listener
dilakukan disini (atau // bisa juga didalam onCreateView)
@Override
public void onViewCreated(View view, Bundle
savedInstanceState) {
// EditText etFoo = (EditText)
view.findViewById(R.id.etFoo);
}
}
Menempelkan Fragment Kedalam Activity
• Ada dua cara untuk menempelkan sebuah fragment ke activity: secara
dinamis menggunakan Java dan secara statis (manual) dengan XML.
• Sebelum menempelkan fragment dari library "support" didalam
Activity, pastikan bahwa Activity sudah meng-
extends FragmentActivity atau AppCompatActivity yang memiliki
fragment manager untuk semua versi Android.
Menempelkan Fragment Secara Statis
(Manual)
• Untuk menempelkan fragment secara statis (manual), cukup
tambahkan elemen fragment ke dalam layout milik sebuah activity
dimana kita menentukan nama dari Fragment yang akan ditampilkan
lewat elemen tersebut.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<fragment
android:name="com.example.android.FooFragment"
android:id="@+id/fooFragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />

</LinearLayout>
Catatan
• Kita tidak dapat mengganti fragment yang ditambahkan secara statis
lewat file XML menggunakan FragmentTransaction (baca di bawah).
Kita hanya bisa mengganti fragment yang ditempelkan secara dinamis.
Menempelkan Fragment Secara Dinamis
• Cara yang kedua ialah dengan menempelkan fragment secara dinamis
menggunakan Java dengan melalui FragmentManager.
Kelas FragmentManager dan kelas FragmentTransaction
 memungkinkan kita untuk menambah, menghapus dan menimpa
fragment yang ada di layout saat activity sedang aktif.
• Dalam kasus ini kita membutuhkan sebuah container (biasanya
menggunakan FrameLayout) ke dalam activity dimana kita bisa
menempelkan sebuah fragment.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<FrameLayout
android:id="@+id/your_placeholder" lalu kita dapat menggunakan FragmentManager
android:layout_width="match_parent"  untuk membuat sebuah FragmentTransaction yang
android:layout_height="match_parent"> mengijinkan kita menambah fragment ke FrameLayout di
</FrameLayout> samping:
// Memulai transaksi
</LinearLayout> FragmentTransaction ft =
getSupportFragmentManager().beginTransaction();
// mengganti isi container dengan fragment baru
ft.replace(R.id.your_placeholder, new FooFragment());
// atau ft.add(R.id.your_placeholder, new FooFragment());
// mulai melakukan hal di atas (jika belum di commit maka
proses di atas belum dimulai)
ft.commit();
Catatan
• Jika sebuah fragment harus selalu ada di dalam activity, gunakan XML
untuk meanmpilkannya secara statis namun saat menemukan kasus
yang lebih kompleks pastikan untuk menggunakan pendekatan
menggunakan Java.
Fragment Lifecycle

Anda mungkin juga menyukai