知道在Android中点击了哪个按钮

时间:2017-06-15 12:18:30

标签: java android android-button

我正在制作一个应用程序,它将在同一版面上包含81个按钮。它们都被称为我创建的一个名为" Tile"的对象。问题是这些图块存储在一个数组中,因此我需要知道以int格式单击了哪个按钮才能调用图块(tiles[??])。我使用的是onClick(View v)方法。我也试过这个:

Log.i("Tile", v.getId() + "was clicked")

它在logcat中给我的结果是一个非常长的整数。

那我怎么知道用数字格式点击了哪个按钮?而临时id(R.id.tile1)和这个长整数之间的关系是什么,因为它可能有用,因为它已经是一个数字?

PS:我知道我可以使用Switch将每个id分配给一个整数,但是因为它们是81,所以这将浪费时间并且会使代码变得非常复杂。

3 个答案:

答案 0 :(得分:3)

我希望你能使用标签选项。您可以通过view.setTag(1)为视图设置标记,然后在单击事件上,您可以使用view.getTag()返回标记集。

答案 1 :(得分:0)

在android中我们可以使用按钮的id来获取点击监听器中的click事件。
说你有,5个按钮: 确保您的Activity / Fragment实现OnClickListener

//在OnCreate中

  Button mClickButton1 = (Button)findViewById(R.id.clickButton1);
  mClickButton1.setOnClickListener(this);
  Button mClickButton2 = (Button)findViewById(R.id.clickButton2);
  mClickButton2.setOnClickListener(this);
  Button mClickButton3 = (Button)findViewById(R.id.clickButton3);
  mClickButton3.setOnClickListener(this);
  Button mClickButton4 = (Button)findViewById(R.id.clickButton4);
  mClickButton4.setOnClickListener(this);
  Button mClickButton5 = (Button)findViewById(R.id.clickButton5);
  mClickButton5.setOnClickListener(this);</br>

//在此之后,您将覆盖OnClickListener

上的onclick方法
public void onClick(View v) {
  switch (v.getId()) {
      case  R.id.clickButton1: {
        // do something for button 1 click
        break;
      }
      case R.id.clickButton2: {
        // do something for button 2 click
        break;
      }

    //.... etc
   }
}

答案 2 :(得分:0)

您可以使用button.setTag(position)将位置设置为标记。

当onclick调用时获取该标记值。

public void onclick(View v){
  int position = Integer.parseInt(v.getTag().toString());
 }