Apple is Apple

오늘의 키워드

  • 이전에 수행 했던 토글 그룹 트러블 슈팅

원인

Single Selection 속성이 되어있는 Toggle Button을 클릭 시, 클릭 이전의 상태가 같이 넘어오는 현상을 발견하였다.

버튼 클릭 상태가 바뀔 떄 이전 버튼이 꺼지는 상황과 클릭한 버튼이 켜지는 상황이 생겨 리스너가 2번 불리는 것 같았다.

해결 과정

addButtonClickListener 안에 isChecked라는 속성이 있다.

reviewWritingGenderButtonGroup.addOnButtonCheckedListener { group, checkedId, isChecked ->

}

isChecked는 현재 버튼이 체크 되어있는 지 여부를 반환해준다.

그룹화된 토글 그룹을 작업 할때는 다음과 같이 수행 해주어야 한다.

Single Selection이 설정 되었기 때문에 버튼을 선택, 취소 할 때마다 콜백이 불린다.

1번을 선택하면 2번이 선택 되지 않았기 떄문에, isChecked이 한번 더 업데이트 되어, 선택되지 않았을 떄의 콜백이 또 불려 값이 꼬이게 된다.

그렇기 떄문에, isChecked 속성 제어를 통해 해결 할 수 있었다.

isChecked 값이 선택 되지 않았을 상태에서는, 아예 리스너를 수행시키지 않는 것이다.

그러면 리스너가 두 번 수행하게 되는 현상을 막을 수 있다.

reviewWritingGenderButtonGroup.addOnButtonCheckedListener { group, checkedId, isChecked ->
		if (!isChecked)
          return@addOnButtonCheckedListener
}

적용 후

참고자료

 

MaterialButtonToggleGroup addOnButtonCheckedListener called twice every time

For some bizarre reason, addOnButtonCheckedListener is called twice every time I click any of the buttons inside MaterialButtonToggleGroup. Below is my XML <ScrollView xmlns:android="http://

stackoverflow.com

 

profile

Apple is Apple

@mjjjjjj