2013-05-13 75 views
0

我想构建简单的记忆游戏。我用了16个按钮。 我知道如何反应时特定的按钮被束缚,但我怎样才能对每个按钮点击作出反应,并检查是否选择匹配按钮(现在不是坏的)?android-反应当点击2个按钮

+1

你可以使用标志来记住最后一个值和新的值。 – Noundla 2013-05-13 18:25:16

+0

谢谢..这是个好主意。而且有一种方法只能做1个而不是16个? – user1932595 2013-05-13 18:34:14

+0

在每个按钮的xml中设置'onClick =“functionName”或将它们分配给相同的侦听器button1.setOnClickListener(this)。第一种方法更好,恕我直言 – codeMagic 2013-05-13 18:38:19

回答

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点击这样你就可以得到它的idswitch上,使用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代表第二次点击比较值的

另一个方法是将它们放置在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()

+0

谢谢。如果我得到像这样的每个按钮:(16按钮) \t button [1] =(Button)findViewById(R.id.button1_mg); 我可以问案(v ==按钮[i])吗? – user1932595 2013-05-13 18:54:10

+0

如果你要以这种方式在你的代码中实例化每个'Button',那么使用其他方法并使用相同的'onClickListener()'。我显示的第一种方式不需要做任何的 – codeMagic 2013-05-13 18:55:58

+0

所以我有其他问题。我问了这个我的记忆游戏。按钮上的文字在* tun time *时从数组中选择randomaly。 有没有办法做到这一点,没有实例化每个按钮? – user1932595 2013-05-13 19:03:16

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值。

+0

这并不能解决使用'onClickListener()'的问题' – codeMagic 2013-05-13 19:15:27