Tips/Android

[Android] Binding 사용 시 모든 요소가 아무 동작도 안할 때

DevJaewoo 2022. 2. 9. 16:24
반응형

Binding 사용 시 모든 요소가 아무 동작도 안할 때

viewBinding 사용 시 간혹 OnClick, OnCheckChange 등의 이벤트들이 하나도 동작하지 않을 떄가 있다.

binding 사용 후 binding을 통해 이벤트를 등록했으면 그걸 보여주도록 설정을 변경해야 하는데, 기존 코드를 그대로 놔둬서 오류가 발생하는 것이었다.

 

Activity의 경우 setContentView의 인자값을 binding.root로 변경해주면 된다.

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

    binding = ActivityMainBinding.inflate(layoutInflater)
    setContentView(binding.root)

    requestPermissions()
    createNotificationChannel()

    binding.contentMain.toolbar.ibToolbar.setOnClickListener {
        toggleDrawerLayout(binding.root)
    }

    binding.navView.setNavigationItemSelectedListener(this)
    setFragment(AlarmFragment())
}

 

Fragment의 경우 onCreateView의 return 부분을 binding.root로 변경하면 된다.

private var _binding: FragmentExampleBinding? = null
private val binding get() = _binding!!

override fun onCreateView(
    inflater: LayoutInflater, container: ViewGroup?,
    savedInstanceState: Bundle?
): View? {

    _binding = FragmentExampleBinding.inflate(inflater, container, false)
    // return inflater.inflate(R.layout.fragment_example, container, false)
    return binding.root
}

 

반응형