현재 보여지는 fragment 에서 뒤로가기 버튼을 누른 이벤트를 처리하고 싶은 경우가 있습니다.
interface BackpressedListener 를 활용한 간단한 예제를 정리하려고 합니다.
1. BackpressedListener
MainActivity 에서 interface BackPressedListener 를 정의해주었습니다.
interface BackPressedListener {
fun onBackPressed()
}
뒤로가기에 대한 event 를 처리해주고 싶은 Fragment 에서
interface 를 연결하고 재정의 한다면 이를 활용할 수 있을 것 입니다.
class Fragment1: Fragment(), BackPressedListener {
lateinit var binding: Fragment1Binding
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
binding = DataBindingUtil.inflate(inflater, R.layout.fragment_1, container, false)
return binding.root
}
override fun onBackPressed() {
Log.d("onBackPressed", "Fragment1")
}
}
2. BackpressedListener 호출
이제 재정의한 onBackpressed 를 호출만 하면 됩니다.
MainActivity 뒤로가기 이벤트 근원지(?) 에서 호출해줍니다.
override fun onBackPressed() {
super.onBackPressed()
val fragment = currentFragment
if (fragment != null) {
if (fragment is BackPressedListener) {
fragment.onBackPressed() // 호출
}
}
}
0 comments: