如何解决通过接口传递价值
我是Kotlin的新手,我正尝试通过界面将选中的单选按钮的值从一个类传递到另一个活动。我有一个名为RadioGroupHelperInterface的接口,
interface RadioGroupHelperInterface {
fun onSelect(selectedItem: String)
}
然后我有一个要从中传递选中的单选按钮的值的类。
class GRadioGroupHelper {
private val radioGroupHelperInterface: RadioGroupHelperInterface? = null
fun setRadioExclusiveClick(parent: ViewGroup?) {
val radios: List<RadioButton>? = parent?.let { getRadioButtons(it) }
if (radios != null) {
for (radio in radios) {
radio.setOnClickListener { v ->
val r: RadioButton = v as RadioButton
r.isChecked = true
radioGroupHelperInterface?.onSelect(r.text as String)
checkedValue = r.text as String
for (r2 in radios) {
if (r2.getId() !== r.getId()) {
r2.isChecked = false
}
}
}
}
}
}
}
最后我的活动如下:
class ChooseCategoryActivity : AppCompatActivity(),View.OnClickListener,RadioGroupHelperInterface {
var radioGRadioGroupHelper=GRadioGroupHelper()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_choose_category)
setListener()
val parent: ViewGroup = findViewById(R.id.svCategories)
radioGRadioGroupHelper.setRadioExclusiveClick(parent)
}
override fun onSelect(selectedItem: String) {
Log.e("Here","reached")
Log.e("value",selectedItem)
Toast.makeText(this,selectedItem,Toast.LENGTH_LONG).show()
}
}
但是,虽然可以在RadioGRadioGroupHelper类中打印该值,但是我无法从活动中获取我在单选框中选中的值。有人可以帮我吗?
解决方法
除了{null}(其初始状态)外,您没有将radioGroupHelpedInterface
字段设置为任何值。你为什么不试试这个:
声明您的GRadioGroupHelper
如下:
class GRadioGroupHelper (private val helperInterface: RadioGroupHelperInterface) {
// All your logic remains the same
}
这将使您避免RadioGroupHelperInterface
实例的可为空性,并且还可以通过活动中的此类构造函数对其进行设置:
val radioGRadioGroupHelper = GRadioGroupHelper(this)
请注意,由于我们不希望您的var
发生变化,因此我将val
更改为radioGRadioGroupHelper
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。