我想构建简单的记忆游戏。我用了16个按钮。 我知道如何在特定按钮被阻止时做出反应,但我如何对每个按钮点击做出反应并检查是否选择了匹配按钮 (现在不是必须的)?
答案 0 :(得分:0)
在xml中,为onClick
Button
的相同名称
<Button
android:id="@+id/btn1"
...
android:onClick="btnClick"/>
<Button
android:id="@+id/btn2"
...
android:onClick="btnClick"/>
在您的java代码中,确保该函数是公共的,具有您在上面的xml onClick
属性中定义的相同名称,并且它只需要View
作为参数。 View
将Button
点击,因此您可以使用id
和switch
,使用if/else
或者您想要处理<{1}} >
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
表示要在第二次单击中比较的值
另一种方式是将它们设置为for loop
,我假设你知道如何设置loop
所以我会保留这个简短的
for (int i=0; i<buttons.size(); i++)
{
...
button[i].setOnClickListener(ActivityName.this);
}
@Override
public void onClick(View v)
{
int id = v.getId();
}
确保您实施OnClickListener()
答案 1 :(得分: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值。