개발

[Android] FragmentContainerView에서 버튼 setOnClickListener 동작 안함 본문

Android

[Android] FragmentContainerView에서 버튼 setOnClickListener 동작 안함

Dev.hs 2021. 11. 21. 18:53

이슈

  • FragmentContainerView에서 view.findViewById를 이용한 클릭 이벤트튼 되지만, binding을 사용한 클릭 이벤트 리스너 동작을 안함.

코드수정

  • 기존 코드(바인딩 부분쪽만)

      class ListFragment : Fragment() {
    
          lateinit var binding: FragmentListBinding
    
          override fun onCreateView(
              inflater: LayoutInflater, container: ViewGroup?,
              savedInstanceState: Bundle?
          ): View? {
              // Inflate the layout for this fragment
              binding = FragmentListBinding.inflate(inflater,container, false)
              return inflater.inflate(R.layout.fragment_list, container, false)
          }
    
          override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
              binding.btnNext.setOnClickListener {
                  Toast.makeText(activity?.applicationContext,arguments?.getString("a"), Toast.LENGTH_SHORT).show()
              }
              super.onViewCreated(view, savedInstanceState)
          }
      }
  • 수정 코드

    • 안드로이드 가이드 프로그먼트에서 뷰 결합 참조해서 사용

      class ListFragment : Fragment() {
      
        private var _binding: FragmentListBinding? = null
        private val binding get() = _binding!!
      
        override fun onCreateView(
            inflater: LayoutInflater, container: ViewGroup?,
            savedInstanceState: Bundle?
        ): View? {
            _binding = FragmentListBinding.inflate(inflater, container, false)
            val view = binding.root
            return view
        }
      
        override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
            binding.btnNext.setOnClickListener {
                Toast.makeText(activity?.applicationContext,"숏ddddddddd", Toast.LENGTH_SHORT).show()
            }
            super.onViewCreated(view, savedInstanceState)
        }
      }

참고

Comments