Рассмотрим следующий пример
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
signature. После этого код будет выглядеть следующим образом:
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 } }