【问题标题】:Override method for anonymous class in Kotlin for AndroidKotlin for Android 中匿名类的重写方法
【发布时间】:2018-10-08 11:23:22
【问题描述】:

我的代码是用 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-Type mismatch. Required: Boolean. Found: Int(在android.R.style.Theme_Translucent_NoTitleBar下)。

2- Type mismatch. Required: DialogInterface.OnCancelListener! Found: () - > Unit 包围被覆盖的函数。

有什么建议吗?

【问题讨论】:

    标签: android kotlin android-dialog motionevent


    【解决方案1】:

    把代码改成这样:

    dialog = object: Dialog(this, android.R.style.Theme_Translucent_NoTitleBar) {
        override fun dispatchTouchEvent(ev: MotionEvent): Boolean {
            // TODO Implement function
        }
    }
    

    它抱怨的原因有两件事。首先,您需要创建一个对象来覆盖 Dialog 的功能。其次,dispachTouchEvent 不是返回布尔值而是单位。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-07
      • 2018-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多