gpt4 book ai didi

java - Android Button.setClickOnListener 解释

转载 作者:行者123 更新时间:2023-12-02 05:04:37 26 4
gpt4 key购买 nike

我从 Android 文档中看到了以下用于向 Android 中的按钮添加监听器的代码:

public class MyActivity extends Activity {
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);

setContentView(R.layout.content_layout_id);

final Button button = (Button) findViewById(R.id.button_id);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Perform action on click
}
});
}
}

好吧,由于setOnClickListener是一个接口(interface),我们可以将代码修改为:

public class MyActivity extends Activity implements View.OnClickListener {
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);

setContentView(R.layout.content_layout_id);

final Button button = (Button) findViewById(R.id.button_id);
button.setOnClickListener(this);

public void onClick(View v) {
// Perform action on click
}
}

嗯,第二个代码对我来说看起来更合乎逻辑,因为我们给 setOnClickListener() 方法参数 this,它代表 MyActivity< 的同一个实例 监听器附加到的类。

所以,我不明白第一个代码是如何工作的。据我了解,当我们执行new Interface时,我们创建了实现Interface的匿名类。但是既然我们将匿名实例作为参数提供给监听器,那么监听器如何附加到 MyActivity 对象而不是匿名对象呢?

最佳答案

But then how the listener is attached to MyActivity object instead of the anonymous one since we give anonymous instance as a parameter to the listener?

监听器永远不会附加到 Activity 。两者之间没有真正的区别。在这两种情况下,您都提供一个实现该接口(interface)的对象。 View,会调用你通过setter提供的对象的onClick方法

关于java - Android Button.setClickOnListener 解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27899764/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com