提问人:paloma agustín 提问时间:10/27/2023 最后编辑:Jonaspaloma agustín 更新时间:10/29/2023 访问量:39
如何创建一个 if-else,除非选择了至少 1 个单选按钮,否则无法传递到其他活动。尝试了太多次,但我仍然不知道
How to create an if-else in which you can not pass to other activity unless at least 1 radiobutton is selected. Tried too times but still I don't know
问:
您好,我是 kotlin 的新手,我遇到了一点问题。我正在尝试制作一个按钮,您单击该按钮将传递给其他活动,但前提是选择了三个单选按钮之一。我做了这段代码,但它不起作用:
button.setOnClickListener {
if (!radioButton1.isChecked || radioButton2.isChecked || radioButton3.isChecked) {
// throws Toast
} else {
val intent = Intent(this, Activity2::class.java)
startActivity(intent)
}
}
我不明白我做错了什么。单选按钮位于 radioGroup 内部。
答:
0赞
Tenfour04
10/27/2023
#1
if 语句正在检查第一个按钮是否未选中,或者第二个或第三个按钮是否被选中。因此,启动活动的唯一条件是选中第一个按钮,而不选中第二个和第三个按钮。
因此,更正后的逻辑是:
button.setOnClickListener {
if (!radioButton1.isChecked && !radioButton2.isChecked && !radioButton3.isChecked) {
// throws Toast
} else {
val intent = Intent(this, Activity2::class.java)
startActivity(intent)
}
}
从语义上讲,你可以把它理解为,“如果第一个按钮没有被选中,第二个按钮没有被选中,第三个按钮没有被选中,则显示 Toast,否则开始活动。
由于这是一种令人困惑的措辞方式,因此我会颠倒 if/else 分支,以便更容易理解。通常更容易考虑没有 nots(运算符)的逻辑。!
button.setOnClickListener {
if (radioButton1.isChecked || radioButton2.isChecked || radioButton3.isChecked) {
val intent = Intent(this, Activity2::class.java)
startActivity(intent)
} else {
// show Toast
}
}
另一种方法是使用列表和函数:any
button.setOnClickListener {
val radioButtons = listOf(radioButton1, radiouButton2, radioButton3)
if (radioButtons.any { it.isChecked }) {
val intent = Intent(this, Activity2::class.java)
startActivity(intent)
} else {
// show Toast
}
}
评论
0赞
paloma agustín
10/28/2023
非常感谢!我有一段时间无法修复它,我不知道为什么!我使用了你最后一种方法,这是我需要的方法!
上一个:AHK 阻止单选按钮执行操作
下一个:检索数据时单选按钮的绑定值
评论