我想建立简单的记忆游戏。我用了 16 按钮。我知道在单击特定按钮时如何做出反应,但是我如何对每个按钮单击做出反应并检查是否选择了匹配按钮(现在不需要)?
问问题
174 次
2 回答
0
使用逻辑我能够创建一个程序,但它很长。对于每个按钮,您应该执行相同的操作:
Button B1;
int x,y; //give them values and compare (example: B1=1, B2=2, B3=1 .. B1&B3 the same picture)
int turn = 1; //to know whos turn (x or y), default start on x
int numberOfClicks=0; //when 2 buttons clicked, check
//in the OnCreate()
B1 = (Button) findViewById(R.id.b1); //assume B1's value = 1
B1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) { //------------------------------------ OnClick Starts here
if (turn==1){
//use x
x=1;
turn=2; //flip the turn
numberOfButtons++; //one is clicked so far
}else{
//use y
y=1;
turn=1;
numberOfButtons++;
}
if(numberOfButtons==2){
//check
if(x==y){
//same
numberOfButtons=0; //restart counter
}else{
//not the same
numberOfButtons=0; //restart counter
}
}//end of OnClick
}); //end of button OnClickListener
如果 B2=7,那么在 OnClick 中,x 和 y 应该 = 7。每个 OnClick 将有不同的 x 和 y 值。
于 2013-05-13T19:13:55.597 回答
0
在 xml 中,onClick
为每个名称使用相同的名称Button
<Button
android:id="@+id/btn1"
...
android:onClick="btnClick"/>
<Button
android:id="@+id/btn2"
...
android:onClick="btnClick"/>
并在您的 java 代码中确保该函数是公共的,与您在onClick
上面的 xml 属性中定义的名称相同,并且它采用 aView
作为其唯一参数。将View
被Button
点击,因此您可以获取它id
并switch
在其上,使用if/else
或以任何方式处理它
public void btnClick(View v)
{
switch(v.getId()) // v is the btn that was clicked so this will give you its id
{
case (R.id.btn1): btn1 was clicked
... do stuff
要回答您的第一个问题,您可以使用前面建议的标志或计数器,如果计数器 == 说 2,那么单击会执行您需要的任何操作。如果不是,那么您存储所Button
代表的值以在第二次单击中进行比较
另一种方法是将它们设置在 a 中for loop
,我假设您知道如何设置 aloop
所以我会保持简短
for (int i=0; i<buttons.size(); i++)
{
...
button[i].setOnClickListener(ActivityName.this);
}
@Override
public void onClick(View v)
{
int id = v.getId();
}
确保你实施OnClickListener()
于 2013-05-13T18:48:09.703 回答