在Kotlin
我有以下内容:
fun ViewManager.controlButton(body: () -> Unit) = frameLayout {
...
}
private fun captureAndInsert() {
println("captureAndInsert is called!")
}
在Anko
视图中:
controlButton(this@MemoryFragmentUi::captureAndInsert)
这很好用。
现在我需要将参数传递给captureAndInsert
,所以它看起来像这样:
private fun captureAndInsert(myInt: Int) {
println("captureAndInsert is called!")
}
如何调整ViewManager.controlButton
和Anko
视图中的调用以接受参数?
修改:
好的,我可以这样做:
fun ViewManager.controlButton(body: (myInt: Int) -> Unit) = frameLayout {
...
}
但是如何从Anko
视图中调用它?
答案 0 :(得分:2)
要接受(Int) -> Unit
函数,只需将Int
参数添加到controlButton
参数中的函数类型:
fun ViewManager.controlButton(body: (Int) -> Unit) = frameLayout {
...
}
body
的调用发生在controlButton
内,因此您还需要将lambda的参数传递给controlButton
的参数列表:
fun ViewManager.controlButton(body: (Int) -> Unit, v: Int) = frameLayout {
body(v)
}
//call
controlButton(this@MemoryFragmentUi::captureAndInsert, 5)