Setelah berhasil menempelkan fragment ke activity, selanjutnya kita akan melakukan perpindahan antar fragment. Langkah kerja dari perpindahan antar fragment adalah sebagai berikut :
- Buat fragment baru dengan nama CategoryFragment.
- Ganti isi dari fragment_category menjadi kode 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=".CategoryFragment"> <!-- TODO: Update blank fragment layout --> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="16dp" android:text="@string/category_fragment" /> <Button android:id="@+id/btn_detail_category" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginRight="16dp" android:layout_marginLeft="16dp" android:text="@string/to_detail_category_fragment"/> </LinearLayout>
- Selesai dengan layout xml, kini pada berkas CategoryFragment modifikasi kodenya menjadi sebagai berikut:
class CategoryFragment : 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_category, container, false) } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) val btnDetailCategory: Button = view.findViewById(R.id.btn_detail_category) btnDetailCategory.setOnClickListener(this) } override fun onClick(v: View) { if (v.id == R.id.btn_detail_category) { } } } }
- Sekarang kembali pada HomeFragment. Tambahkan baris berikut pada metode onClick().
override fun onClick(v: View) { if (v.id == R.id.btn_category){ val mCategoryFragment = CategoryFragment() val mFragmentManager = parentFragmentManager mFragmentManager.beginTransaction().apply { replace(R.id.frame_container, mCategoryFragment, CategoryFragment::class.java.simpleName) addToBackStack(null) commit() } } }
- Sehingga kode dari HomeFragment menjadi seperti ini:
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) { if (v.id == R.id.btn_category){ val mCategoryFragment = CategoryFragment() val mFragmentManager = parentFragmentManager mFragmentManager.beginTransaction().apply { replace(R.id.frame_container, mCategoryFragment, CategoryFragment::class.java.simpleName) addToBackStack(null) commit() } } } }
- Setelah selesai, silakan jalankan aplikasi lagi. Klik tombol Fragment Category. Aplikasi sudah berpindah tampilan tanpa berpindah activity.