-
본문으로 바로가기

출처: https://velog.io/@changhee09/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-Data-Binding

 

 

 

class ExampleFragment : Fragment() {
    private var _binding: FragmentExampleBinding? = null

    private val binding
        get() = _binding!!


    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        // 바인딩 클래스를 통해 지정(XML 지정 필요 없음)
        _binding = FragmentExampleBinding.inflate(inflater, container, false)
        // 직접 XML 파일 지정
        _binding = DataBindingUtil.inflate(inflater, R.layout.fragment_example, container, false)

        val view = binding.root

        return view
    }

    override fun onDestroy() {
        super.onDestroy()
        _binding = null
    }
}

액티비티와 비슷한데 직접 바인딩 클래스를 이용하여 inflate하면 XML 파일을 지정할 필요가 없고 DataBindingUtil.inflate하면 XML 파일을 지정해야 합니다. 또한 액티비티와는 다르게 바인딩 변수를 null로 선언한 것은 Single Activity에서 Fragment가 계속해서 변경될 때, onDestroy안에서 바인딩 변수를 null로 처리하여 메모리를 절약하기 위해서입니다.

반응형