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

Knowing which button was clicked in Android

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

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

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

那么我怎么知道在数字格式中点击了哪个按钮呢? casual id (R.id.tile1) 和这个长整数之间的关系是什么,因为它已经是一个数字了?

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

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

在android中我们可以使用按钮的id在点击监听器中获取点击事件。
假设你有 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
   }
}

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

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

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