gpt4 book ai didi

java - 不同的 OnClickListener 实现方式

转载 作者:搜寻专家 更新时间:2023-11-01 08:05:32 24 4
gpt4 key购买 nike

有什么区别:

public class MainActivity extends Activity {

public void onCreate (Bundle savedInstanceState) {
button1 = (Button) findViewById(R.id.btn1);
button1.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
// Click code
}
)};
}
}

和:

public class MainActivity extends Activity implements OnClickListener {

public void onCreate (Bundle savedInstanceState) {
button1 = (Button) findViewById(R.id.btn1);
button1.setOnClickListener(this);
}

public void onClick(View arg0) {
switch(arg0.getId()) {
case R.id.button1:
// Click code
break;
}
}
}

它们具有完全相同的功能和结果。

最佳答案

第一种方法使用实现接口(interface)方法的匿名内部类。通过使用这种方法,您只会收到该特定 View 的事件。

在第二种方法中,整个 Activity 类都实现了 OnClickListener 接口(interface)。您可以将每个 View 的 OnClickListener 设置为 this,并在一个方法中接收所有点击事件,然后您可以在其中过滤它们并对其进行操作。

第一种方法转换为:

Button.OnClickListener anonymous_listener = new Button.OnClickListener() { ... };
button.setOnClickListener(anonymous_listener);

也就是说,当您使用它时,它会动态创建并存储一个新的 OnClickListener 实例。

在第二种方法中,您的整个类使用 OnClickListener 的一个实例,它被传递给您想要监听点击的所有 View 。

关于java - 不同的 OnClickListener 实现方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14811701/

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