Android:是否可以直接从setOnClickListener()调用方法?

时间:2013-04-04 23:12:12

标签: java android methods onclicklistener

我正在动态创建一些按钮,理想情况下,如果按下按钮,则可以运行方法。

是否有类似以下内容?

private void someMethod(int ID){
 //on button pressed do something with the ID
}

private void otherMethod(){

  for( Program element : someList)
  {
    addButton.setOnClickListener(someMethod(element.getID));
  }
}

显然,这只是模拟一些代码来说明我的问题。我知道你可以实例化一个新的类,所以看起来你应该能够调用一个方法,尽管到目前为止我只是在尝试时遇到错误。

我看过网络但找不到任何答案,所以我想在这里问。

1 个答案:

答案 0 :(得分:3)

setOnClickListener定义单击按钮时会发生什么。为同一个按钮多次设置是没有意义的;你设置的最后一个将是活动的。

要在侦听器中调用 方法,请声明一个匿名类覆盖:

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

如果您尝试设置具有类似功能的多个按钮,则需要循环显示按钮(在列表中),然后设置每个OnClickListener个。要为每个按钮实现不同的变量,您可以使用View的{​​{3}}:

for (Button b : buttons) {
    b.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
             someMethod(v.getTag());
        }
    });
}

现在您只需将XML中的Button tag属性(或tag)设置为您想要的任何属性,它就会被传递到侦听器中(因此方法也是如此) )。