Design-loving front-end engineer
Ryong
Design-loving front-end engineer
전체 방문자
오늘
어제
    • Framework
    • React
      • Concept
      • Library
      • Hook
      • Component
      • Test
    • NodeJS
    • Android
      • Concept
      • Code
      • Sunflower
      • Etc
    • Flutter
      • Concept
      • Package
    • Web
    • Web
    • CSS
    • Language
    • JavaScript
    • TypeScript
    • Kotlin
    • Dart
    • Algorithm
    • Data Structure
    • Programmers
    • Management
    • Git
    • Editor
    • VSCode
    • Knowledge
    • Voice
Design-loving front-end engineer

Ryong

Android/Code

[ Android ] [ Kotlin ] 프래그먼트 onClick

2021. 11. 16. 16:49

✔  프래그먼트에 있는 뷰들의 클릭 처리 이벤트는 액티비티와 다르다.

✔  액티비티에서는 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
    'Android/Code' 카테고리의 다른 글
    • [ Project ] [ Android ] [ Kotlin ] 콜백 함수
    • [Android] [Kotlin] 객체 인스턴스
    • [Project] [Android] [Kotlin] Log Window
    • [Android] [Kotlin] Google Map
    Design-loving front-end engineer
    Design-loving front-end engineer
    디자인에 관심이 많은 모바일 앱 엔지니어 Ryong입니다.

    티스토리툴바