Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android:是否可以直接从setOnClickListener()调用方法?_Java_Android_Methods_Onclicklistener - Fatal编程技术网

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

Java Android:是否可以直接从setOnClickListener()调用方法?,java,android,methods,onclicklistener,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

我正在动态创建一些按钮,理想情况下,如果按下按钮,我希望能够运行一个方法

像下面这样的事情可能吗

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));
  }
}
显然,这只是一些代码的模型来说明我的问题。我知道你可以实例化一个新的类,所以看起来你应该能够调用一个方法,尽管到目前为止我只是在尝试中不断出错


我在网上浏览了一下,但找不到任何答案,所以我想在这里提问。

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

要调用侦听器中的方法,请声明匿名类重写:

addButton.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
           someMethod(...);
        }
});
如果您试图设置具有类似功能的多个按钮,则需要在按钮之间循环(例如,在列表中),并设置每个按钮的
OnClickListener
s。要实现每个按钮的不同变量,可以使用
视图


现在,您可以简单地将XML(或)中的
按钮
标记
属性设置为您希望的任何值,它将被传递到侦听器(从而传递到方法)。

如果这是一个愚蠢的问题,很抱歉,但为什么循环在它里面?我不确定您在追求什么。我编辑了我的答案,以防您尝试使用不同的参数调用多个按钮
someMethod
for (Button b : buttons) {
    b.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
             someMethod(v.getTag());
        }
    });
}