✔ 프래그먼트에 있는 뷰들의 클릭 처리 이벤트는 액티비티와 다르다.
✔ 액티비티에서는 layout 파일의 클릭 이벤트를 희망하는 뷰에 onClick 속성을 추가하고 액티비티에서 onClick 메서드를 구현하면 가능했지만,
✔ 프래그먼트에서는 코드로 직접 클릭 리스너를 연결시켜줘야 한다.
✔ fragment_main.xml에 container라는 id를 갖는 layout 안에 버튼 3개가 있다고 가정하자.
코드
class MainFragment : Fragment(), View.OnClickListener {
private lateinit var binding: FragmentMainBinding
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
binding = DataBindingUtil.inflate(inflater, R.layout.fragment_main, container, false)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
setOnClickListener()
}
private fun setOnClickListener() {
val btnSequence = binding.container.children
btnSequence.forEach { btn ->
btn.setOnClickListener(this)
}
}
override fun onClick(v: View) {
when (v.id) {
R.id.btn_first -> {
LogUtil.d(TAG, "First Button")
}
R.id.btn_second -> {
LogUtil.d(TAG, "Second Button")
}
R.id.btn_third -> {
LogUtil.d(TAG, "Third Button")
}
}
}
companion object {
private const val TAG = "MainFragment"
fun instance() = MainFragment()
}
}
'Android > Code' 카테고리의 다른 글
[ Project ] [ Android ] [ Kotlin ] 콜백 함수 (0) | 2021.11.16 |
---|---|
[Android] [Kotlin] 객체 인스턴스 (0) | 2021.11.05 |
[Project] [Android] [Kotlin] Log Window (0) | 2021.10.18 |
[Android] [Kotlin] Google Map (0) | 2021.09.24 |
[Android] [Kotlin] EditText 자동 포커싱 및 키보드 (0) | 2021.09.23 |