Kotlin中的多重继承
考虑下面的例子
public class SomeActivity() : Activity(), OnClickListener { override fun onCreate(Bundle?: savedInstanceState) { super<Activity>.onCreate(savedInstanceState) ... someButton.setOnClickListener(this) // How do I refer to the `OnClickListener` implementation? } }
如何引用上面提到的代码片段中的OnClickListener
实现?
不要忘记实现onClick(View)
函数并更改onCreate
签名。 之后,代码将如下所示:
public class SomeActivity() : Activity(), OnClickListener { override fun onCreate(savedInstanceState: Bundle?) { super<Activity>.onCreate(savedInstanceState) val someButton = Button(this) someButton.setOnClickListener(this) } override fun onClick(v: View) { // TODO implement } }
不想创建一个Android项目,我创建了一个类的模拟,并没有错误使用另一个答案中提到的代码:
// mocked up classes interface Bundle {} open class Activity { open fun onCreate(savedInstanceState: Bundle?) {} } interface View {} interface OnClickListener { fun onClick(v: View) } open class Button(a: Activity) { fun setOnClickListener(o: OnClickListener) {} } // the usage, showing no error: public class SomeActivity() : Activity(), OnClickListener { override fun onCreate(savedInstanceState: Bundle?) { super<Activity>.onCreate(savedInstanceState) val someButton = Button(this) someButton.setOnClickListener(this) // NO ERROR } override fun onClick(v: View) { // TODO implement } }