在Android应用程序中,我想让用户选中单选按钮,根据用户检查的内容,我希望它在下一个活动中更改内容(例如隐藏按钮或更改按钮的文本(。我是怎么做到的?
我已经找到了如何让它在下一个活动中更改文本视图,但可能也有更好的方法。
val rg1 = findViewById<RadioGroup>(R.id.rg1)
val rb1 = findViewById<RadioButton>(R.id.rb1)
val rb2 = findViewById<RadioButton>(R.id.rb2)
val tv1 = findViewById<TextView>(R.id.tv1)
val btnNext = findViewById<Button>(R.id.btnNext)
rg1.setOnCheckedChangeListener(RadioGroup.OnCheckedChangeListener { _, i ->
when (i) {
R.id.rb1 -> tv1.text = "something"
R.id.rb2 -> tv1.text = "something else"
}
})
btnNext.setOnClickListener {
val result = tv1.text.toString()
val intent = Intent(this, Activity2::class.java)
intent.putExtra("Result", result)
startActivity(intent)
}
tv1.isGone = true
在活动 2 中执行此操作后:
val result = intent.getStringExtra("Result")
val tv2 = findViewById<TextView>(R.id.tv2)
tv2.text = result
它会更改活动 2 中的 tv2(tv1 仅用于获取文本字符串,不应显示在第一个活动中,正如我之前所说,可能也有更好的解决方案(。但最重要的是,当我想隐藏按钮或在下一个活动中根据单选按钮执行其他操作时该怎么办?
不确定这是否是你问题的答案,但请考虑一下:
您可以更改
rg1.setOnCheckedChangeListener(RadioGroup.OnCheckedChangeListener { _, i ->
when (i) {
R.id.rb1 -> tv1.text = "something"
R.id.rb2 -> tv1.text = "something else"
}
})
到这样的东西
rg1.setOnCheckedChangeListener(RadioGroup.OnCheckedChangeListener { _, i ->
when (i) {
R.id.rb1 -> OneSetupOfYourUI()
R.id.rb2 -> AnotherSetupOfYourUI()
}
})
然后在函数中定义要更改的内容并调用这些函数,而不是更改每个组件。
fun OneSetupOfYourUI(){
//change stuff in here
}
也许这有帮助?
然后,当您开始新活动时:
val result = tv1.text.toString()
val intent = Intent(this, Activity2::class.java)
intent.putExtra("Result", result)
startActivity(intent)
考虑根据配置的 UI 或用户选择的内容添加多个 intent.putExtra()
语句
编辑
对于任何感兴趣或不确定的人,您也可以简单地在when
语句中执行此操作:
when (i) {
R.id.rb1 -> {
tv1.text = "something"
etc.
//now you can do several statements here :)
}
}