我想构建简单的记忆游戏。我用了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