我只是想知道:
当我编码时
button.setOnclickListener(this)
...即使我在文档中没有找到对“setOnclickListener(context Context)”之类的任何引用,为什么这种方法必须得到“this”。“这”究竟是什么?(我已经实现了 OnClickListener 接口)。
我只是想知道:
当我编码时
button.setOnclickListener(this)
...即使我在文档中没有找到对“setOnclickListener(context Context)”之类的任何引用,为什么这种方法必须得到“this”。“这”究竟是什么?(我已经实现了 OnClickListener 接口)。
嘿,你认为this
是错误的。这里这代表 setOnClick 回调的当前类引用。
这里 this 不代表 Context,它是在当前类上实现接口的 java 语法。
OnClickListener
是一个interface
并且 setOnClick 有参数作为这个接口。因此,如果您使用它,setOnClick
那么您必须创建OnClickListener
这样的新实例
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
或者您通过 this 关键字引用当前类以在当前类中实现该接口。喜欢
view.setOnClickListener(this);
通过这种方式,您必须在您的类中实现该接口的方法。
class MyActivity implements OnClickListener{
@Override
public void onClick(View v) {
}
}
更新 :
this
java中的关键字是指当前类。当你在context
参数中传递这个时,当前类应该是扩展上下文类。为了更好地理解这里this
的关键字。
我希望这个解释对你有所帮助。
如果您有任何困惑,请告诉我。
基本上this
是指当前的实例。例如
//this here refers to the current container class
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//this here refers to OnClickListener
}
});
所以如果我使用
MainActivity extends AppCompatActivity implements OnClickListener
mButton.setOnClickListener(this);
我们可以在这里得出结论,我将 MainActivity 作为 clickListener 传递,因为他正在实现OnClickListener
使其成为侦听器。希望this
能帮助你清除一些东西
如果 this(上下文)实现了 onClickListener,那么您可以将其称为单击侦听器。关键是它必须有一个函数 onClick 才能在监听器被触发时执行。或者,您可以使用要执行的代码创建一个新的 onClickListener 并将其作为参数传递。