출처: 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로 처리하여 메모리를 절약하기 위해서입니다.
반응형
'코딩ㆍ개발 정보 > 안드로이드앱 (코틀린)' 카테고리의 다른 글
안드로이드 shape 설정하는 방법 (0) | 2023.12.24 |
---|---|
코틀린 RecyclerView 커스텀 LayoutManager 구성하기 (0) | 2023.12.24 |
안드로이드 코틀린 프로젝트 (복제)사본 만드는 방법 (0) | 2023.09.05 |
안드로이드 스튜디오 빌드 에러 Can't determine type for tag '<macro name="m3_comp_assist_chip_container_shape">?attr/shapeAppearanceCornerSmall</macro>' (0) | 2023.09.03 |
Android Gradle 플러그인과 Android 스튜디오 호환성 (0) | 2023.09.02 |
댓글