gpt4 book ai didi

java - 声明一个类实现 OnClickListener 还是自己声明?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:05:03 26 4
gpt4 key购买 nike

为我的标题道歉,我无法正确阐明问题。

我见过 OnCLickListener 以两种方式实现。第一个是通过表示您的类实现 OnCLickListener 来完成的。第二个通过让您自己声明来完成任务。

为什么在第一个选项中你可以简单地将 this 作为你的 setOnCLickListener 参数,但在第二个选项中你必须经历创建 OnClickListener< 的麻烦 反对你自己?

第一个:

public class WidgetConfig extends Activity implements OnClickListener {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.widgetconfig);
Button b = (Button)findViewById(R.id.bwidgetconfig);
b.setOnClickListener(this);
}
//onClick defined outside of the onCreate
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub

}

第二个:

public class WidgetConfig extends Activity{

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.widgetconfig);
Button b = (Button)findViewById(R.id.bwidgetconfig);
b.setOnClickListener(bListener);
}



private Button bListener = new OnClickListener(){

b.setOnClickListener(new OnClickListener(){

@Override
public void onClick(View v) {

//TO-DO

}
});

最佳答案

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

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

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

第二种方法转化为:

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

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

关于java - 声明一个类实现 OnClickListener 还是自己声明?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17540013/

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