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.
![]() | ![]() |

