我正在制作一个应用程序,它将在同一版面上包含81个按钮。它们都被称为我创建的一个名为" Tile"的对象。问题是这些图块存储在一个数组中,因此我需要知道以int格式单击了哪个按钮才能调用图块(tiles[??]
)。我使用的是onClick(View v)
方法。我也试过这个:
Log.i("Tile", v.getId() + "was clicked")
它在logcat中给我的结果是一个非常长的整数。
那我怎么知道用数字格式点击了哪个按钮?而临时id(R.id.tile1
)和这个长整数之间的关系是什么,因为它可能有用,因为它已经是一个数字?
PS:我知道我可以使用Switch将每个id分配给一个整数,但是因为它们是81,所以这将浪费时间并且会使代码变得非常复杂。
答案 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());
}