개발/Android

[Android] 프레그먼트 추가 및 삭제(뒤로가기 버튼)

지산동고라니 2021. 10. 27. 20:04

안드로이드 앱은 보통 하나의 액티비에서 다양한 프레그먼트 들을 쌓거나 삭제하며 사용자에게 정보를 전달한다. 이 과정에서 프레그먼트를 추가하고 뒤로가기 버튼을 누르면 이전의 프레그먼트로 돌아가는 방법을 소개하고자 한다.

 

위의 그림처럼 쌓여진 프레그먼트를 삭제하고 이전의 프레그먼트로 돌아가는 것이다.

 

프레그먼트 추가 코드

    fun onSomeThingClick(view: View){
    	// Something을 클릭하면 Fregment를 추가
        supportFragmentManager.beginTransaction().add(R.id.fragment_container, someFragment(param)).commit()
    }

       

프레그먼트 삭제 코드'

override fun onAttach(context: Context) {
        super.onAttach(context)
        val callback = object : OnBackPressedCallback(true) {
            override fun handleOnBackPressed() {
                requireActivity().let{
                    it.supportFragmentManager.beginTransaction().remove(this@SomeFragment).commit()
                }
            }
        }
        requireActivity().onBackPressedDispatcher.addCallback(this, callback)
    }

간단하게 설명하면 onAttach 라이프사이클에 안드로이드만 존재하는 뒤로가기 버튼을 오버라이드해서 이전의 프레그먼트를 삭제하는 코드이다.