我想構建簡單的記憶遊戲。我用了16個按鈕。 我知道如何反應時特定的按鈕被束縛,但我怎樣才能對每個按鈕點擊作出反應,並檢查是否選擇匹配按鈕(現在不是壞的)?android-反應當點擊2個按鈕
回答
在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
或不過你要處理的是
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()
謝謝。如果我得到像這樣的每個按鈕:(16按鈕) \t button [1] =(Button)findViewById(R.id.button1_mg); 我可以問案(v ==按鈕[i])嗎? – user1932595 2013-05-13 18:54:10
如果你要以這種方式在你的代碼中實例化每個'Button',那麼使用其他方法並使用相同的'onClickListener()'。我顯示的第一種方式不需要做任何的 – codeMagic 2013-05-13 18:55:58
所以我有其他問題。我問了這個我的記憶遊戲。按鈕上的文字在* tun time *時從數組中選擇randomaly。 有沒有辦法做到這一點,沒有實例化每個按鈕? – user1932595 2013-05-13 19:03:16
使用邏輯,我能夠創建一個程序,但它是很長的。 對於每個按鈕你應該做相同的:
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值。
這並不能解決使用'onClickListener()'的問題' – codeMagic 2013-05-13 19:15:27
- 1. Android按鈕2點擊
- 2. 當我點擊一個按鈕在android
- 3. Android應用點擊一個按鈕
- 4. 當點擊按鈕
- 5. 當點擊按鈕
- 6. 反應:點擊按鈕不起作用
- 7. 反應點擊按鈕呈現頁面
- 8. 按鈕點擊沒有反應
- 9. 上按鈕沒有反應點擊
- 10. 發生反應,路由按鈕點擊
- 11. Android按鈕點擊
- 12. 反應 - 如何顯示相關的元素,當點擊按鈕
- 13. 當我點擊「上傳」按鈕時沒有任何反應
- 14. C#按鈕2只能是點擊後按鈕1點擊
- 15. 多個按鈕和一個按鈕沒有反應在點擊事件
- 16. 當點擊按鈕JavaFX
- 17. 當點擊提交按鈕
- 18. 當點擊確認按鈕
- 19. 當我點擊按鈕java
- 20. 顯示,當點擊按鈕
- 21. 當我點擊按鈕
- 22. AS3 |當按鈕被點擊
- 23. TabBar當前按鈕點擊
- 24. Android應用是點擊按鈕
- 25. 的Android按鈕點擊應用崩潰
- 26. 按鈕沒有響應點擊 - Android
- 27. 當我點擊一個按鈕
- 28. 當我點擊一個按鈕
- 29. Selenium C#System.AggregateException當點擊一個按鈕
- 30. 當我點擊一個按鈕
你可以使用標誌來記住最後一個值和新的值。 – Noundla 2013-05-13 18:25:16
謝謝..這是個好主意。而且有一種方法只能做1個而不是16個? – user1932595 2013-05-13 18:34:14
在每個按鈕的xml中設置'onClick =「functionName」或將它們分配給相同的偵聽器button1.setOnClickListener(this)。第一種方法更好,恕我直言 – codeMagic 2013-05-13 18:38:19