위젯 중 RadioButton위젯은 대부분 단 하나만 사용되는 경우는 드물고 사용자에게 여러 가지 선택사항을 제시할 때 그만큼 여러 개의 RadioButton이 사용되는 경우가 많습니다. 이때 RadioGroup을 사용해 서로 연관되는 RadioButton을 묶어 놓으면 그만큼 사용하기가 편해집니다.
RadioGroup을 사용하기 위해 위젯을 디자인영역에 끌어다 놓으면 위와 같은 그림을 볼 수 있습니다. 이 상태에서 RadioButton을 방금 추가한 RadioGroup위에다가 끌어다 놓은 후 RadioGroup의 ID는 rdoGroup로 변경하고 그 안에 추가한 RadioButton의 ID는 각각 rdo_car, rdo_air, rdo_ship로, text는 자동차, 비행기, 배로 설정합니다.
필요한 RadioButton을 RadioGroup으로 묶는 이유는 사용자가 각각 선택할 수 있는 RadioButton의 이벤트를 RadioGroup에서 하나로 묶어 처리할 수 있기 때문입니다.
코드편집기로 이동해 다음과 같이 코드를 작성합니다.
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
rdoGroup.setOnCheckedChangeListener { group, checkedId ->
when (checkedId) {
R.id.rdo_car -> {
//자동차가 선택되는 경우
Log.d("test", "자동차")
}
R.id.rdo_ship -> {
//배가 선택되는 경우
Log.d("test", "배")
}
R.id.rdo_air -> {
//비행기가 선택되는 경우
Log.d("test", "비행기")
}
}
}
}
}
코드 편집기에서 처음 rdoGroup까지 입력하고. 을 찍으면 다음과 같이 사용 가능한 목록이 나열될 것입니다. 이 목록 중에서 'setOnCheckedChangeListener { group, checkedId...' 부분을 선택한뒤 위 코드를 추가하면 됩니다.
이제 앱을 빌드하고 실행하면 사용자가 RadioButton을 선택하는 경우에 따라 when분기에 의해 각각의 처리로 이동하게 됩니다.
그런데 앱을 실행하면 처음에는 아무것도 선택되어 있지 않은 상태로 시작하는데
뭔가 기본적인 선택상태의 초기화가 필요하다면 RadioGroup의 checkedButton속성에서 원하는 RadioButton을 선택해 주면 됩니다.
'Mobile > Kotlin' 카테고리의 다른 글
[Kotlin] 시작하기 (hello world) (0) | 2020.12.16 |
---|---|
[Kotlin] 위젯 - CheckBox, ProgressBar (0) | 2020.12.16 |
[Kotlin] 위젯 - ImageButton (0) | 2020.12.15 |
[Kotlin] 위젯 - Plain Text (0) | 2020.12.14 |
[Kotlin] 위젯 - 텍스트뷰(TextView) (0) | 2020.12.14 |