이 글은 Kotlin 언어로 안드로이드 앱 개발 시,
Fragment에서 뷰바인딩(View Binding)을 설정하고 사용하는 방법에 대해 정리한다.
뷰바인딩을 설정하는 방법과 Activity에서 사용하는 방법은 아래 글을 참고하자.
[안드로이드 Kotlin] 뷰바인딩(View Binding) 설정 및 사용 방법
build.gradle 파일에 뷰바인딩 설정을 했다고 가정하고,(위 글 참고)
Fragment 에서 뷰바인딩을 구현한 코드 전문이다.
class FragmentTest : Fragment() {
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// 1. 뷰 바인딩 설정
val binding = FragmentMenuBinding.inflate(inflater, container, false)
// 2. 바인딩으로 TextView 등에 접근
bindig.myTextView.text = "바인딩이 잘 되었어요!!"
// 3. 프래그먼트 레이아웃 뷰 반환
return binding.root
}
}
1. 뷰 바인딩 설정
onCreateView() 생명주기 콜백 메서드에서 바인딩 변수를 생성한다.
framgent_menu.xml 파일을 바인딩하려면, FragmentMenuBinding 클래스의 inflate()메서드를 호출해주면 된다.
(xml파일명의 첫글자와 언더바_ 다음 글자를 대문자로 바꾸고 Binding을 붙여주면 된다.)
val binding = FragmentMenuBinding.inflate(inflater, container, false)
2. 바인딩 사용
binding변수.뷰ID 형태로 사용하면 된다.
예를들어 id가 myTextView인 텍스트뷰는 아래처럼 참조한다.
bindig.myTextView.text = "바인딩 성공"
3. 레이아웃 뷰 반환
액티비티는 Fragment의 onCreateVew() 메서드에서 반환하는 뷰를 화면에 띄운다.
원래 있던 자동생성코드는 아래와 같지만,
return inflater.inflate(R.layout.fragment_life, container, false)
이제 바인딩을 사용하므로 binding.root로 레이아웃 뷰를 반환해주면 된다.
return binding.root
여기서는 정리를 위해 onCreateView() 내부에서 binding 변수를 선언하여 지역변수처럼 사용했지만,
어디서든 binding을 사용하기 위해선 전역변수? 프로퍼티? 로 선언해서 사용해도 괜찮을 것 같다.
( lateinit 등 활용 )
class FragmentMenu : Fragment(), Animation.AnimationListener {
// lateinit 으로 선언해두고, onAttach()에서 초기화해도 된다.
lateinit var binding: FragmentMenuBinding
// 물론 nullable? 로 선언해둬도 된다.
// var binding: FragmentMenuBinding? = null
}
실행해보면 뷰바인딩이 성공적으로 세팅되었음을 알 수 있다.
'개발(Development) > Android(안드로이드)' 카테고리의 다른 글
[안드로이드 Kotlin] JSON 파일 저장 및 파싱 방법: JSONArray, JSONObject (0) | 2021.07.21 |
---|---|
[안드로이드 kotlin] Fragment에서 Context 사용 방법: findViewById, runOnUiThread, Toast 등 (0) | 2021.07.21 |
[안드로이드] RadioGroup의 RadioButton 가운데/비율 정렬 배치 방법 (0) | 2021.07.20 |
[안드로이드] Constraint Layout의 chain weight(비율) 설정 View 배치 방법 (0) | 2021.07.19 |
[안드로이드 Kotlin] 뷰바인딩(View Binding) 설정 및 사용 방법 (0) | 2021.07.19 |
댓글