Activity

 1.Bắt sự kiện bên fragment

B1. Bên fragment ta tạo 1 interface

interface FragmentHomeToActivityMain{
fun onClickCategory()
fun onBackToFragment()
}

B2. override fun onAttach()

override fun onAttach(context: Context) {
super.onAttach(context)
if(context is FragmentHomeToActivityMain){
listener = context
} else {
throw RuntimeException("$context must implement FragmentHomeToActivityMain")
}
}

p/s: context ở dây là MainActivity. Chúng ta gán cho biến listener nhằm cho trình biên dịch coi listener đang nằm trong class MainActivity, để có quyền thực thi các câu lệnh được override trên MainActivity

B3. override fun onDetach()

override fun onDetach() {
super.onDetach()
listener = null
}

p/s: Khi fragment huỷ liên kết với mainActivity thì biến listener = null nhằm tiết kiệm dụng lượng bộ nhớ

B4. Bên mainActivity

Ta kết thừa interface

class MainActivity : AppCompatActivity(), fragment_home.FragmentHomeToActivityMain

 đồng thời override các function thuộc interface

override fun onClickCategory() {
binding.bottomMenu.visibility = View.GONE
}

override fun onBackToFragment() {
binding.bottomMenu.visibility = View.VISIBLE
}

Lúc này các func được gọi ra nhắm thực hiện xử lý sự kiện bắt được bên fragment 

Nhận xét