匿名类如何将自己从监听事件中删除

时间:2019-06-18 13:16:09

标签: android onclick onclicklistener

我有一个按钮想要向其添加一个clickListener,并且想要在首次通话后将其删除。

我看到只有setOnClickListener而不是addOnClickListener,尽管有articles

我需要保留引用吗?不能是匿名者吗?

我看到没有removeOnClickListener

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

2 个答案:

答案 0 :(得分:0)

视图仅包含对一个OnClickListener的引用。

调用View.setOnClickListener(OnClickListener)会更改该引用-先前的引用已删除,提供的引用将其替换为新的侦听器。如果您将null用作参数,则将没有侦听器。

如果您希望在一个视图上具有多个单击侦听器,则必须扩展按钮本身或编写自定义OnClickListener实现以聚合多个单击侦听器(即OnCLickListeners的列表)

答案 1 :(得分:0)

您可以使用计数器变量来满足您的要求。请参考下面的代码:

int counter = 0;    //This is Global variable

closeButton.setOnClickListener(new OnClickListener() {
  @Override
  public void onClick(View v) {
     ++counter;
     if (counter == 1)
          closeButton.setClickable(false);
     else closeButton.setClickable(true);
  }
});