android - Kotlin for Android 中匿名类的重写方法

标签 android kotlin android-dialog motionevent

我的代码是用 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/

相关文章:

android - Android Youtube下载mp3

android - Material Design 中的警告对话框

android - GPS 状态接收器 2 周前停止工作

android - Android Room查询对象具有至少一个存在于另一个列表中的项目

android - 使用 Dispatchers.IO 进行 Kotlin 协程测试

android对话框将图标设置为标题

java - 如何使用 showDialog(id) 更新 AlertDialog 内容

android - 为我公司的不同客户使用一个 keystore ?

android - 使用经过改造的 url 编码的 POST 请求发送 JSONObject

javascript - 如何删除 Android WebView 中的标题? (加载时)