我只是想知道:
当我编码
button.setOnclickListener(this)
...为什么这个方法必须得到“this”,即使我在文档中没有找到任何类似“setOnclickListener(context Context)”的引用。实际是什么“这个”? (我已经实现了OnClickListener接口)。
答案 0 :(得分:0)
如果此(上下文)实现onClickListener,则可以将其称为单击侦听器。关键是它必须有一个函数onClick来在触发侦听器时执行。或者,您可以使用您希望执行的代码创建一个新的onClickListener,并将其作为参数传递。
答案 1 :(得分:0)
嘿,你错了this
。这里代表了setOnClick回调的当前类referenece。
这里不代表Context,它是一种在当前类上实现接口的java语法。
OnClickListener
是interface
,setOnClick有参数作为此接口。因此,如果您使用此setOnClick
,那么您必须像这样创建OnClickListener
的新实例
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
或者您引用当前类来通过此关键字在当前类中实现该接口。喜欢
view.setOnClickListener(this);
通过这种方式,您必须在类中实现该接口的方法,如。
class MyActivity implements OnClickListener{
@Override
public void onClick(View v) {
}
}
更新:
java中的 this
关键字指的是当前类。在context
参数中传递时,当前类应该必须扩展上下文类。
为了更好地理解this
关键字here。
我希望这个解释可以帮到你。
如果您有任何疑惑,请告诉我。
答案 2 :(得分:0)
基本上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
可以帮助你清除某些内容