기록

issue/Spinner/java.lang.NullPointerException(onItemSelected) 본문

Moblie/Android

issue/Spinner/java.lang.NullPointerException(onItemSelected)

youngyin 2022. 11. 21. 10:00

이슈

프래그먼트 이동 후 돌아왔을 때, 아래와 같은 오류가 발생했다.

참고자료

https://stackoverflow.com/questions/30253238/android-spinners-onitemselected-executed-twice-when-going-back-to-fragment/30253459

breakPoint를 찍어서 테스트해본 결과, Android 프레임워크에 의해 두번 호출되는데, 그 중 첫번째에서 view에 null값을 반환하여 생기는 문제임을 확인했다.

해결방법

view가 null 값을 반환할 수 있도록 수정한다.

  • 문제 있는 코드
with(binding.spinner){
    this.adapter = adapter
    this.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
        override fun onItemSelected(parent: AdapterView<*>?, view: View, position: Int, id: Long) {
            view?.let {
                model.selectBucketByIndex(position)
            }
        }

        override fun onNothingSelected(arg0: AdapterView<*>?) {}
    }
}
  • 해결된 코드
with(binding.spinner){
    this.adapter = adapter
    this.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
        override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
            view?.let {
                model.selectBucketByIndex(position)
            }
        }

        override fun onNothingSelected(arg0: AdapterView<*>?) {}
    }
}
Comments