有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

这样的事情可能吗

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) 个答案

  1. # 1 楼答案

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

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

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

    如果您试图设置具有类似功能的多个按钮,则需要循环使用按钮(例如,在列表中),并设置每个按钮的OnClickListener。要实现每个按钮的不同变量,可以使用Viewtag

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

    现在,您只需将XML(或manually)中Buttontag属性设置为您想要的任何值,它就会被传递到侦听器(以及方法)