如何在Android ImageButton派生类中重写onClick

如何在Android ImageButton派生类中重写onClick,android,Android,我已经用一千种不同的方式问了一千次这个问题,但仍然无法让它起作用 我创建了一个从ImageButton派生的类。我想在类中定义我的“点击”行为 我知道我可以在我的活动onCreate中做一些事情,比如: myButton b; b = (myButton)findViewById(R.drawable.mybutton); b.setOnClickListener(new View.OnClickListener() { ...etc... 但是我想在派生类中定义它应该在哪里的代码

我已经用一千种不同的方式问了一千次这个问题,但仍然无法让它起作用

我创建了一个从ImageButton派生的类。我想在类中定义我的“点击”行为

我知道我可以在我的活动onCreate中做一些事情,比如:

myButton b;
b = (myButton)findViewById(R.drawable.mybutton);
b.setOnClickListener(new View.OnClickListener() {
     ...etc...
但是我想在派生类中定义它应该在哪里的代码

我首先认为我可以将其定义为:

 @Override public void onClick(View v) {
…但是我得到一个错误,说我不能在这里使用“@Override”,因为“onClick”不在超类中。(当试图删除“@Override”时,它只生成并运行,但从未被调用)。我也试过:

 @Override public void onClickListener(View v) {
…以及“implements onClickListener”和“implements onClickListener”的几个变体都没有用

这应该相当简单-有什么想法吗

   b.setOnClickListener(new OnClickListener() {
      @Override
      public void onClick(View v) {
          derivedClassFunction(v);
      }
  });

   public void derivedClassFunction(View v) {
          /* code...*/
   }
另一种方式:

public class DerivedClass extends ImageButton implements View.OnClickListener {
    /*code...*/
    b.setOnClickListener(this);
    /*code...*/
    @Override
    public void onClick(View v) {
        /*code...*/
    }

}

这是因为在视图中实际上没有方法
onClick()
。这项工作是在
视图
类中的
onUpKey()
中完成的

但是,如果您想监听子类中的单击事件,这可以非常容易地完成。您可以创建一个实现
View.OnClickLister
的内部类,并使用它来侦听事件,或者更简单地说,在类中实现接口,并在构造期间将其设置为侦听器。后者将如下所示:

class YourClass extends ImageButton implements View.OnClickListener {
    public YourClass() {
        setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        //Your code
    }
}
LAS_VEGAS已经发布了第一个带有内部类的变体的样子。

噢,我想我明白了——“OnClickListener”是一个“接口”,它包含一个函数“onClick”。您必须调用“setOnClickListener”并将支持该接口的对象传递给它,并且该函数是否已实现?