Mengenal Fragment Pada Aplikasi Android

android studio 17 Sep 2015

Mengenal Fragment Pada Aplikasi Android. Fragment merupakan bagian dari UI dalam activity. Kamu dapat menggabungkan beberapa fragment dalam activity untuk membuat multi-pane UI.Ada beberapa hal yang kamu perlu tahu tentang fragment yaitu, fragment memiliki siklus hidup(lifecycle) sendiri, dapat proses event sendiri, dan dapat ditambah atau dihapus ketika activity sedang jalan. Fragment diperkenalkan pada HoneyComb API 11 namun bisa digunakan pada perangkat android lama dengan menggunakan Support Library dari 1.6 sampai 2.0. Contoh fragment seperti di gambar berikut.
fragment example teknorial
Ketika salah satu item dari listview disentuh oleh user maka akan mencul informasi atau item dari detail view. Untuk lebih memahami, Saya akan berikan screenshot dalam aplikasi android yang sebenarnya.
fragment apps contact on android
Contoh Kasus screenshot diatas adalah apps contact. Pada UI smartphone maka user pertama kali akan melihat listview dan ketika item dari listview disentuh maka berpindah ke detail view, berbeda dengan UI pada tablet karena tablet memiliki ukuran lebih lebar maka listview, DetailView dan other data view akan muncul secara bersamaan.
fragment apps contact on android tablet ui
Jadi dapat kita ambil kesimpulan bahwa beberapa fragment dapat dikombinasi dalam satu activity dan optimal digunakan pada layar lebih besar seperti tablet.

Siklus Hidup (LifeCycle) Pada Fragment

Prerequisites:
Mengenal Activity pada Aplikasi Android

Class fragment memiliki kode yang terlihat hampir seperti Activity. Fragment berisi method callback mirip dengan Activity, seperti onCreate (), onStart (), onPause (), dan OnStop (). Siklus hidup dari fragment berhubungan dengan siklus hidup Activity, berikut tahapan siklus hidup fragment yang berkaitan dengan siklus hidup dari activity.

lifecycle android fragment and activity create
Berikut penjelasan tahapan di siklus hidup(LifeCycle) dari gambar diatas.
1. Activity onCreate() dipanggil, dimana activity dapat mengatur tampilan dengan menggunakan method setContentView().
2. onAttach() dipanggil setelah fragment dikaitkan dengan activity. Fragment mendapat refrensi ke objek activity yang dapat digunakan sebagai konteks.
3. onAttachFragment dipanggil oleh activity untuk menotifikasi activity bahwa fragment telah di attach.
4. onCreate () dipanggil ketika saat dibuat fragment.
Apa yang membedakan oncreate() di activity dan Oncreate di fragment ?
Pada oncreate() di Activity, Kita bisa gunakan setContentView() dan menghubungkan dengan tampilan (UI), tapi pada Oncreate() di fragment seharusnya kita tidak mengakses element UI dari fragment karena Activity Oncreate() mungkin belum selesai,namun, kita bisa membuat backgroud thread untuk membuat operasi lebih lama.
5. Method OnCreateView() dipanggil dalam fragment, disinilah kita dapat menautkan layout fragment dengan objeknya.
6. onActivityCreated() dipanggil setelah method activity onCreate() selesai. jadi disini kita dapat mengakses element UI melalui method ini.
7. onStart() dipanggil di dalam activity
8. onStart() dipanggil di dalam fragment
9. onResume() dipanggil di dalam activity
10. onResume() dipanggil di dalam fragment
Pada dalam kotak merah, ini merepresentasikan method yang dipanggil untuk setiap fragment. Untuk setiap fragment method 3,4,5 dipanggil dan akhiri dengan method 6.

Sekarang kita lihat kasus dimana fragment akan dihancurkan (destroyed).
lifecycle android fragment and activity destroyed

1. onPause() dipanggil di dalam fragment.
2. onPause() dipanggil di dalam activity
3. onSaveInstanceState () digunakan untuk menyimpan informasi fragment dalam objek Bundle.
4. onSaveInstanceState () digunakan untuk menyimpan informasi activity dalam objek Bundle.
5. onStop() dipanggil di dalam fragment.
6. onStop() dipanggil di dalam Activity.
7. onDestroyView () dipanggil setelah hirarki view fragment tidak lagi dapat diakses.
8. onDestroy () dipanggil setelah fragment tidak digunakan, masih ada objek java melekat pada activity.
9. onDestroy () dipanggil di dalam activity.
10.onDetach () fragment tidak terikat dengan activity, dan tidak memiliki hirarki view lagi.
[AdSense-A]

Contoh Penggunaan LifeCycle Fragment pada Aplikasi Android

Pada tutorial ini, kita akan mempelajari lifecycle fragment pada aplikasi android. Ikuti langkah berikut ini.
1. Buat project baru, pada tutorial ini saya menggunakan nama package com.teknorial.fragmentlifecycle.
2. Modifikasi file MainActivity.java seperti dijelaskan dibawah ini.

package com.teknorial.fragmentlifecycle;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;

public class MainActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    
}

 

3.Buat Java class baru dengan nama fragmentkita.java pada direktori app/java/com.teknorial.fragmentlifecycle.
class fragment javadalam file ini terdapat method-method callback yang menjelaskan siklus hidup (LifeCycle). Method Log.d() digunakan untuk menghasilkan pesan Log.

package com.teknorial.fragmentlifecycle;

import android.app.Activity;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;


/**
 * Created by Teknorial on 15-Sep-15.
 */
public class FragmentKita extends Fragment {

    @Override
    public void onAttach (Activity activity){
        Log.i("Fragment","onAttach");
        super.onAttach(activity);
    }

    @Override
    public void onCreate (Bundle savedInstanceState){
        Log.i("Fragment","onCreate");
        super.onCreate(savedInstanceState);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
        Log.i("Fragment", "onCreateView");
        return inflater.inflate(R.layout.fragment_layout,container,false);
    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState){
        Log.i("Fragment","onActivityCreated");
        super.onActivityCreated(savedInstanceState);
    }

    @Override
    public void onStart() {
        Log.i("Fragment","onStart");
        super.onStart();
    }

    @Override
    public void onResume() {
        Log.i("Fragment","onResume");
        super.onResume();
    }

    @Override
    public void onPause() {
        Log.i("Fragment","onPause");
        super.onPause();
    }

    @Override
    public void onSaveInstanceState(Bundle outState){
        Log.i("Fragment","onSaveInstanceState");
        super.onSaveInstanceState(outState);
    }

    @Override
    public void onStop() {
        Log.i("Fragment","onStop");
        super.onStop();
    }

    @Override
    public void onDestroyView() {
        Log.i("Fragment","onDestroyView");
        super.onDestroyView();
    }

    @Override
    public void onDestroy() {
        Log.i("Fragment","onDestroy");
        super.onDestroy();
    }

    @Override
    public void onDetach() {
        Log.i("Fragment","onDetach");
        super.onDetach();
    }

}

4. Modifikasi file activity_main.xml seperti berikut.

<RelativeLayout 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"  tools:context=".MainActivity">

    <TextView android:text="@string/hello_world" android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    <fragment
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:name="com.teknorial.fragmentlifecycle.FragmentKita"
        tools:layout="@layout/fragment_layout"/>

</RelativeLayout>

5.Buat file XML layout baru dengan nama fragment_layout.java pada direktori app/res/layout.

<?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:paddingTop="100dp"
    android:background="#52B3D9"
    android:orientation="vertical">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="121dp"
        android:background="#CF000F"
        android:text="Ini adalah Fragment Kita :D"
        android:textSize="32sp" />

</LinearLayout>

Sekarang kita coba menjalankan Aplikasi untuk melihat siklus hidup atau lifecycle. Jika aplikasi kita sudah berjalan di emulator, Kita dapat melihat pesan log dari LogCat di android studio.

Demikian Artikel Mengenal Fragment pada Aplikasi Android. Ikuti terus teknorial.com untuk mengetahui banyak hal tentang android. Jangan lupa untuk Like Fanspage Teknorial di Facebook dan Google Plus untuk mendapatkan update terbaru dari teknorial.com . Jika ada pertanyaan jangan ragu untuk bertanya dikotak komentar. Terima Kasih

Tag