我有以下两个定义 .
第一个作为扩展函数,允许设置可见的 View
,并使用第二个参数将其设置为不可见或不可见 .
fun View.setVisible(visible: Boolean, goneWhenVisibleFalse: Boolean) {
visibility = when {
visible -> View.VISIBLE
goneWhenVisibleFalse -> View.GONE
else -> View.INVISIBLE
}
}
这里的第二个,作为使用上面第一个的扩展属性 .
var View.visible: Boolean
get() = visibility == View.VISIBLE
set(value) {
setVisible(value, true)
}
直到这里都没有复杂 . 代码编译和应用程序正确启动 . 但我得到一个黑屏,logcat没有错误,没有任何迹象 .
过了一会儿,我改变了第一个函数的签名,接收第二个参数,默认为true:
fun View.setVisible(visible: Boolean, goneWhenVisibleFalse: Boolean
= true )
然后它正常工作 . 问题是:为什么会这样?我挖到了字节码 . 但看起来没有重复签名,两种情况下参数的数量都不同 .
也许是kotlin的错误?我正在使用kotlin插件v1.2.30
1 回答
用这个: