【问题标题】:Do I need to add many methods, or is it possible to call one method我是否需要添加许多方法,或者是否可以调用一种方法
【发布时间】:2015-02-22 07:48:25
【问题描述】:

我有一个tic tac toe app,我想知道是否可以将所有tic tac toe按钮设置为一个on_click事件,然后创建一个变量来获取点击按钮的ID,然后传递它作为另一个执行实际功能的方法的参数,或者我是否需要为每个按钮创建不同的 on_click 事件?

【问题讨论】:

    标签: java android logic


    【解决方案1】:

    您可以这样做,并根据需要添加尽可能多的“案例”:

    View.OnClickListener sharedClickHandler = new View.OnClickListener() {
      public void onClick(View view) {
          switch(view.getId()) {
            case R.id.button1:
              // handle first button
              break;
            case R.id.button2:
              // handle second button
              break;
    
          }
      }
    }
    

    【讨论】:

      【解决方案2】:

      您可以只使用一个侦听器 - onClick 方法采用 View 参数,即被点击的视图。然后您可以找出您的哪些按钮是:

      View.OnClickListener sharedClickHandler = new View.OnClickListener() {
        public void onClick(View view) {
          int id = view.getId();
          // Do the right thing based on the ID
        }
      }
      

      具体如何根据 ID 执行您需要执行的操作取决于您。对于简单的示例,您可以只使用 switch/case 语句;在其他情况下,如果您从 ID 映射到其他东西(例如表示游戏状态的可变对象),您可以使用 Map<Integer, GameObject> 并获得正确的...

      【讨论】:

      • 您能否编辑您的答案以显示如何使用一些示例代码来完成?
      • @LightMikeE:你可以在视图上调用getId() 来找出它是什么...
      • 事情是,我得到一个错误说不兼容的类型,需要 java.lang.String found int
      • @LightMikeE:是的,我忘记了 ID 最终是整数。将编辑。
      • 你的答案是正确的,但是 Ofer Lando 给出了带有开关盒的示例代码,但还是谢谢
      【解决方案3】:

      您好,您可以对按钮使用相同的单击事件,例如,您可以将整数作为标签附加到按钮上,以便您知道单击了哪个按钮并进行相应处理。

      button1.setTag(1);
      button2.setTag(2);
      button3.setTag(3);
      
      
      button1.setOnClickListener(buttonClick());
      button2.setOnClickListener(buttonClick());
      button3.setOnClickListener(buttonClick());
      
      
      
       public View.OnClickListener buttonClick(){
      
          View.OnClickListener click = new View.OnClickListener() {
              @Override
              public void onClick(View v) {
      
                  int numberClicked = v.getTag();
      
                  //You have now the button clicked
      
              }
          };
      
      
          return click;
      
      }
      

      【讨论】:

        猜你喜欢
        • 2014-12-13
        • 1970-01-01
        • 2014-10-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-24
        • 2012-07-08
        • 1970-01-01
        相关资源
        最近更新 更多