我可以从侦听器内部引用 OnClickListener 的按钮吗? (安卓)

Posted

技术标签:

【中文标题】我可以从侦听器内部引用 OnClickListener 的按钮吗? (安卓)【英文标题】:Can I reference an OnClickListener's button from inside the listener? (android) 【发布时间】:2011-09-30 17:47:10 【问题描述】:

我有一个 android 程序,其中有多个按钮使用相同的 OnClickListener,我希望能够从侦听器内部引用按钮的动态分配文本。有没有办法引用被按下以获取其文本的按钮?我不想让多个按钮特定的监听器做同样的事情。

【问题讨论】:

【参考方案1】:

在您的 onClick(View v) 中,您可以将其转换为按钮:

@Override
public void onClick(View v) 
  Button clickedButton = (Button)v;
  // do stuff with it here.

【讨论】:

【参考方案2】:

使用作为onClick(View v)参数的视图

这可以转换为按钮并使用。

【讨论】:

【参考方案3】:

onClick 的参数是发起点击的视图,它将是您附加侦听器的按钮。将其转换为 Button 以获取按钮对象。

【讨论】:

【参考方案4】:

是的,应该有办法的。

public abstract void onClick (View v)

您会注意到被点击的 View 被传递到 onClick() 方法中。因此,如果您有一个可用的视图(按钮)的引用(例如,作为 Activity 中的实例变量),那么您可以这样做:

public abstract void onClick (View v) 
    if (v == firstButton) 
        //Do some stuff
    
    else if (v == secondButton) 
        //Do some other stuff
    

【讨论】:

以上是关于我可以从侦听器内部引用 OnClickListener 的按钮吗? (安卓)的主要内容,如果未能解决你的问题,请参考以下文章

如何从事件侦听器内部将数据添加到同步广播 StreamController 到该控制器的 Stream?

是否可以在 PHP 中从自身内部引用匿名函数?

交换2个html元素并在其上保留事件侦听器

从 NSValueTransformer 内部引用 NSManagedObject 实体

如何从主窗体内部引用子窗体中对象的事件

活动到活动回调监听器