[英]Knowing which button was clicked in Android
我正在制作一个将在相同布局上包含81个按钮的应用程序。 它们全都称为我创建的称为“ Tile”的对象。 问题是这些图块存储在数组中,因此我需要知道以int格式单击了哪个按钮才能调用图块( tiles[??]
)。 我正在使用onClick(View v)
方法。 我也试过这个:
Log.i("Tile", v.getId() + "was clicked")
它在logcat中给我的结果是一个非常长的整数。
那么如何知道数字格式单击了哪个按钮? 临时id( R.id.tile1
)和这个长整数之间的关系是什么,因为它已经是一个数字,所以可能会有所帮助?
PS:我知道我可以使用Switch将每个id分配给一个整数,但是因为它们是81,这将浪费时间,并使代码非常复杂。
希望您可以使用标签选项。 您可以通过view.setTag(1)设置视图的标签,然后在单击事件时可以使用view.getTag()获取标签集。
在android中,我们可以使用按钮的ID来获取Click监听器中的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
}
}
您可以使用button.setTag(position)将位置设置为标签。
并在调用onclick时获取该标记值。
public void onclick(View v){
int position = Integer.parseInt(v.getTag().toString());
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.