我的代码是用 Java 编写的,我正在将其重构为 Kotlin。我有这个:
Dialog dialog = new Dialog(this, android.R.style.Theme_Translucent_NoTitleBar) {
@Override
public boolean dispatchTouchEvent(MotionEvent event) {
dismiss();
dialog = null;
setLockedDialog(false);
return false;
}
};
我无法使用 Kotlin 编写它。这是我的方法:
dialog = Dialog(this, android.R.style.Theme_Translucent_NoTitleBar) {
override fun dispatchTouchEvent(ev: MotionEvent) {
// TODO Implement function
}
}
我的 Android Studio 显示:
1- 类型不匹配。必需: bool 值。找到:Int
(在 android.R.style.Theme_Translucent_NoTitleBar
下)。
2- 类型不匹配。必需:DialogInterface.OnCancelListener!发现:() -> Unit
围绕着重写的函数。
有什么建议吗?
最佳答案
将代码改成这样:
dialog = object: Dialog(this, android.R.style.Theme_Translucent_NoTitleBar) {
override fun dispatchTouchEvent(ev: MotionEvent): Boolean {
// TODO Implement function
}
}
它提示的原因有两点。首先,您需要创建一个对象来覆盖 Dialog 的一个功能。其次,dispachTouchEvent 返回的不是 bool 值而是单位。
关于android - Kotlin for Android 中匿名类的重写方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52701199/