为什么 button.setOnClickListener 必须设置 "this" 关键字?
Why does button.setOnClickListener have to set "this" keyword?
我只是想知道:
当我编码时
button.setOnclickListener(this)
...为什么这个方法必须得到 "this",即使我在文档中没有找到任何类似 "setOnclickListener(context Context)" 的参考。 "this" 实际是什么? (我实现了OnClickListener接口)
如果这个(上下文)实现了 onClickListener,那么你可以调用它作为点击监听器。关键是它必须有一个函数 onClick 在监听器被触发时执行。或者,您可以使用要执行的代码创建一个新的 onClickListener 并将其作为参数传递。
嘿,你误会了 this
。这里代表当前 class setOnClick 回调的引用。
这里不代表Context,是java实现当前class接口的语法。
OnClickListener
是一个 interface
并且 setOnClick 有参数作为这个接口。所以如果你使用这个 setOnClick
那么你必须像这样
创建 OnClickListener
的新实例
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
或者你引用current class通过这个关键字在current class中实现那个接口。喜欢
view.setOnClickListener(this);
通过这种方式,您必须在 class 中实现该接口的方法。
class MyActivity implements OnClickListener{
@Override
public void onClick(View v) {
}
}
更新:
this
java 中的关键字指的是当前 class。当您在 context
参数中传递它时,当前 class 应该必须扩展上下文 class。
为了更好地理解 this
关键字 here.
我希望这个解释对你有帮助。
如果您有任何困惑,请告诉我。
基本上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
能帮助你清除一些东西
我只是想知道:
当我编码时
button.setOnclickListener(this)
...为什么这个方法必须得到 "this",即使我在文档中没有找到任何类似 "setOnclickListener(context Context)" 的参考。 "this" 实际是什么? (我实现了OnClickListener接口)
如果这个(上下文)实现了 onClickListener,那么你可以调用它作为点击监听器。关键是它必须有一个函数 onClick 在监听器被触发时执行。或者,您可以使用要执行的代码创建一个新的 onClickListener 并将其作为参数传递。
嘿,你误会了 this
。这里代表当前 class setOnClick 回调的引用。
这里不代表Context,是java实现当前class接口的语法。
OnClickListener
是一个 interface
并且 setOnClick 有参数作为这个接口。所以如果你使用这个 setOnClick
那么你必须像这样
OnClickListener
的新实例
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
或者你引用current class通过这个关键字在current class中实现那个接口。喜欢
view.setOnClickListener(this);
通过这种方式,您必须在 class 中实现该接口的方法。
class MyActivity implements OnClickListener{
@Override
public void onClick(View v) {
}
}
更新:
this
java 中的关键字指的是当前 class。当您在 context
参数中传递它时,当前 class 应该必须扩展上下文 class。
为了更好地理解 this
关键字 here.
我希望这个解释对你有帮助。
如果您有任何困惑,请告诉我。
基本上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
能帮助你清除一些东西