我是否需要添加许多方法,或者是否可以调用一种方法

时间:2015-02-22 07:48:25

标签: java android logic

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

3 个答案:

答案 0 :(得分:4)

您可以执行以下操作,并根据需要添加任意数量的“案例”:

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;

      }
  }
}

答案 1 :(得分:1)

你可以只使用一个监听器 - 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
  }
}

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

答案 2 :(得分:0)

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

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;

}