Sub CPMK
- Mahasiswa dapat menjelaskan perbedaan fragment dan activity
- Mahasiswa dapat membangun program dengan menggunakan fragment untuk berpindah halaman
- Mahasiswa dapat membangun program dengan menerapkan class DialogFragment
Alat & Bahan
- Laptop atau PC dengan Spesifikasi Prosesor minimal Corei5 dan RAM 8 GB
- Android Studio
- Android Device
Langkah Praktikum
- Buat Project Android Baru
Nama Project | BelajarFragmentApp |
Target & Minimal SDK | Phone and Tablet, API Level 21 |
Tipe Activity | Empty Activity |
Language | Kotlin |
- Ubah Kode di MainActivity menjadi seperti berikut ini
<FrameLayout android:id="@+id/frame_container" 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"> </FrameLayout>
- Kemudian kita buat beberapa fragment untuk mengimplementasikan perpindahan tampilan tanpa perpindahan activity. Pertama kita buat fragment dengan nama HomeFragment. Caranya : klik kanan pada package utama pada proyek aplikasi Anda → New → Fragment → Fragment (Blank).
- Setelah tampil dialog untuk fragment, isikan HomeFragment pada kolom Fragment Name dan Klik Finish untuk melanjutkan penciptaan fragment.
- Setelah HomeFragment tercipta, pada fragment_home.xml mari sesuaikan tampilannya dengan menambahkan sebuah objek textview dan sebuah objek button seperti berikut:
<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:orientation="vertical" tools:context=".HomeFragment"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="16dp" android:text="@string/home_fragment" /> <Button android:id="@+id/btn_category" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="16dp" android:layout_marginRight="16dp" android:text="@string/to_category_fragment"/> </LinearLayout>
Akan ada yang error pada bagian android:text .Seperti pada modul sebelumnya kita perlu menambahkan resource string-nya.
Tambahkan beberapa baris kode di bawah ini di dalam res → values → strings.xml.
<resources> <string name="app_name">Belajar Fragment</string> <string name="hello_blank_fragment">Hello blank fragment</string> <string name="home_fragment">Ini adalah home fragment</string> <string name="to_category_fragment">Category Fragment</string> <string name="category_fragment">Ini adalah category fragment</string> <string name="to_detail_category_fragment">Detail Category Fragment</string> <string name="detail_category_fragment">Ini adalah Detail Category Fragment</string> <string name="show_dialog">tampilkan dialog</string> <string name="pertanyaan">Siapa pelatih yang cocok menggantikan Ole di MU ?</string> <string name="brendan_rodgers">Brendan Rodgers</string> <string name="mouricio_pochettino">Mouricio Pochettino</string> <string name="ralf_rangnick">Ralf Rangnick</string> <string name="erik_ten_hag">Erik Ten Hag</string> <string name="tutup">Tutup</string> <string name="pilih">Pilih</string> </resources>
Resource String ini akan kita gunakan selama latihan fragment.
- Pada HomeFragment hapus kode yang tidak digunakan dan lakukan penyesuaian kode sebagai berikut:
class HomeFragment : Fragment(), View.OnClickListener { override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { // Inflate the layout for this fragment return inflater.inflate(R.layout.fragment_home, container, false) } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) val btnCategory:Button = view.findViewById(R.id.btn_category) btnCategory.setOnClickListener(this) } override fun onClick(v: View) { } }
- Selanjutnya, pada MainActivity, kita tanamkan HomeFragment ke dalam activity tersebut sehingga bisa tampil ke layar pengguna dengan menambahkan beberapa baris berikut:
... override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val mFragmentManager = supportFragmentManager val mHomeFragment = HomeFragment() val fragment = mFragmentManager.findFragmentByTag(HomeFragment::class.java.simpleName) if (fragment !is HomeFragment) { Log.d("MyFlexibleFragment", "Fragment Name :" + HomeFragment::class.java.simpleName) mFragmentManager .beginTransaction() .add(R.id.frame_container, mHomeFragment, HomeFragment::class.java.simpleName) .commit() } } ...
- Sehingga kode lengkap dari MainActivity.kt adalah sebagai berikut
class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val mFragmentManager = supportFragmentManager val mHomeFragment = HomeFragment() val fragment = mFragmentManager.findFragmentByTag(HomeFragment::class.java.simpleName) if(fragment !is HomeFragment){ Log.d("Belajar Fragment", "Nama Fragment :" + HomeFragment::class.java.simpleName) mFragmentManager .beginTransaction() .add(R.id.frame_container, mHomeFragment, HomeFragment::class.java.simpleName) .commit() } } }
- Setelah selesai semua, silakan jalankan aplikasi Anda. Seperti ini tampilannya.