我正在动态创建一些按钮,理想情况下,如果按下按钮,则可以运行方法。
是否有类似以下内容?
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));
}
}
显然,这只是模拟一些代码来说明我的问题。我知道你可以实例化一个新的类,所以看起来你应该能够调用一个方法,尽管到目前为止我只是在尝试时遇到错误。
我看过网络但找不到任何答案,所以我想在这里问。
答案 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)设置为您想要的任何属性,它就会被传递到侦听器中(因此方法也是如此) )。