2013-05-13 72 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