为什么 onClick() 函数是抽象的?

Why is onClick() function abstract?

(使用 KOTLIN)

我对这个话题有点困惑。

当我在我的 class 中实现 View.OnClickListener 接口时,我调用了 'Testing',我收到以下消息:

Class 'Testing'不抽象,不实现抽象成员public abstract fun onClick(v:View!): Unit defined in android.view.View.OnClickListener.

我知道在我的 'Testing' class 中实现此功能 onClick(v: View!) 可以解决这个问题。但我的问题是:为什么消息说 onClick(v:View!) 是抽象的?

当我将此函数签入 'View' class 的 'OnClickListener' 时,我可以看到该函数不包含 abstract 我们可以在这段代码中看到的关键字:

/**
 * Interface definition for a callback to be invoked when a view is clicked.
 */
public interface OnClickListener {
    /**
     * Called when a view has been clicked.
     *
     * @param v The view that was clicked.
     */
    void onClick(View v);
}

不过,OnCreateContextMenuListener 界面不会出现此错误消息。这是为什么?

  1. 为什么抽象?

    接口中的所有方法都是抽象的,没有方法体(实现)。

  2. 为什么OnCreateContextMenuListener没问题。

    你的测试class的超级class是什么?我认为超级 class(或任何祖先 class)必须实现 onCreateContextMenu 方法。