RadioGroupで初期選択のラジオボタンを指定する
やりたい事
ラジオグループを用意した時に、そのままでは、どのラジオボタンも選択されていない状態になっています。
デフォルトで選択されている状態にしたい、というのがやりたい事です。
方法
RadioGroupクラスの「void check (int id)」を使えば良いようでした。
サンプルコード(Android:Kotlin)
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.widget.*
import android.widget.LinearLayout.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// レイアウトの生成
val radioBtn1 = RadioButton(this) // ラジオボタン1を用意
val radioBtn2 = RadioButton(this) // ラジオボタン2を用意
val radioGroup = RadioGroup(this) // ラジオグループを用意
LinearLayout(this).apply {
orientation = VERTICAL
}.let{
setContentView(it)
// ラジオグループの生成
it.addView( radioGroup.apply{
orientation = HORIZONTAL
// ラジオボタンを登録
addView( radioBtn1.apply{ text = "ラジオボタン1"})
addView( radioBtn2.apply{ text = "ラジオボタン2"})
})
}
// 初期設定(デフォルトでラジオボタン2を選択状態にする)
radioGroup.check(radioBtn2.id)
// ラジオボタンのチェックが変更された時にテキストを表示
radioGroup.setOnCheckedChangeListener { _, checkedId ->
Toast.makeText( this, findViewById<RadioButton>(checkedId).text.toString(), Toast.LENGTH_LONG).show()
}
}
}
サンプルコードでは、ラジオグループ内にあるボタンの中から、デフォルトで「ラジオボタン2」が選択された状態になるよう設定しています:
radioGroup.check(radioBtn2.id)
ちなみに、デフォルトで選択状態にしたいラジオボタンをラジオグループにAddViewした後(⇦ 動的にラジオボタンを作った場合の注意点)であれば
radioBtn2.isChecked = true
と、当該ラジオボタンの方で設定しても選択できるみたいでした。
参考
この記事が気に入ったらサポートをしてみませんか?