我有一个RadioGroup
,如下:
<RadioGroup android:layout_width="wrap_content" android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@+id/player_age"
android:id="@+id/gender"
android:layout_marginStart="8dp" app:layout_constraintStart_toStartOf="parent"
android:layout_marginEnd="8dp" app:layout_constraintEnd_toEndOf="parent"
android:layout_marginTop="18dp">
<RadioButton
android:text="Male"
android:layout_width="wrap_content"
android:layout_height="wrap_content" tools:layout_editor_absoluteY="328dp"
tools:layout_editor_absoluteX="58dp" android:id="@+id/male"/>
<RadioButton
android:text="Female"
android:layout_width="wrap_content"
android:layout_height="wrap_content" tools:layout_editor_absoluteY="328dp"
tools:layout_editor_absoluteX="224dp" android:id="@+id/radioButton4"/>
</RadioGroup>
我浏览了RadioGroup
的文档,而getCheckedRadioButtonId
似乎是最适合使用的功能:
返回该组中所选单选按钮的标识符。 空选择时,返回值为-1。
但是它返回一个无用的Int
而不是RadioButton
的ID:
import kotlinx.android.synthetic.main.activity_player_details.*
override fun onClick(v: View?) {
val name: String = player_name.text.toString()
val age: Int = player_age.text.toString().toInt()
val gender: Int = gender.checkedRadioButtonId
println(name)
println(age)
println(gender) // prints 2131361895
}
}
有什么主意我该如何检索已检查的id
的实际RadioButton
?
答案 0 :(得分:0)
在布局文件中,属性android:id="@+id/male"
的意思是“使用名为'male'的id
常量,如果不存在则创建它”。这导致在R.java int
类中生成R.id
;如果您查看字段R.id.male
的实际值,您会发现它是一个看似随机的数字。
当您从Java代码中使用R.id.male
时,实际上您只是在使用一些int
值。因此,当您获得选中的ID并进行打印时,就可以看到一个“随机”数字。
但是,您可以使用Resources.getResourceEntryName()
方法将数字解析回代表名称的String
:
val genderId = gender.checkedRadioButtonId // R.id.male, int value 2131361895
val genderString = resources.getResourceEntryName(genderId) // "male"
答案 1 :(得分:0)
override fun onClick(v: View?) {
if(radioGroup.getCheckedRadioButtonId() == findViewById(R.id.YOUR_RADIO_BUTTON).getId())
{
//TODO
}
val name: String = player_name.text.toString()
val age: Int = player_age.text.toString().toInt()
val gender: Int = gender.checkedRadioButtonId
println(name)
println(age)
println(gender) // prints 2131361895
}
}
这行代码将帮助您解决问题。它的作用是getCheckRadioButtonId()
返回与您定义的单选按钮关联的ID,并将其与您在 XML 文件中提供的 ID 进行比较。