2012-08-01 42 views
0

我有3 Buttons如何匹配一个字符串与android中的按钮文本?

当我点击任何Buttons的,我想Button的颜色改变,如果Button文本与可变String ans;一个String匹配。

有人可以帮助我吗?

这里是我曾尝试:

public void onClick(View v) { 
     // TODO Auto-generated method stub 
     if((btn10.getId())==(R.id.btn10)) 
     { 
      if(btn10.getText().toString().equals(ans)) 
      { 
       btn10.setBackgroundColor(Color.GREEN); 
       score=score+10; 


      } 
      else 
      { 
       if((btn11.getId())==(R.id.btn11)) 
       { 
        btn10.setBackgroundColor(Color.RED); 

       } 
       if((btn12.getId())==(R.id.btn12)) 
       { 
        btn12.setBackgroundColor(Color.RED); 

       } 
       ch=ch-1; 
      } 
     } 
     else if((btn11.getId())==(R.id.btn11)) 
     { 
      if(btn11.getText().toString().equals(ans)) 
      { 
       btn11.setBackgroundColor(Color.GREEN); 
       score=score+10; 
      } 
      else 
      { 
       if((btn12.getId())==(R.id.btn12)) 
       { 
        btn12.setBackgroundColor(Color.RED); 

       } 
       if((btn10.getId())==(R.id.btn10)) 
       { 
        btn10.setBackgroundColor(Color.RED); 

       } 
       ch=ch-1; 
      } 
     } 
     else if((btn12.getId())==(R.id.btn12)) 
     { 
      if(btn12.getText().toString().equals(ans)) 
      { 
       btn12.setBackgroundColor(Color.GREEN); 
       score=score+10; 
      } 
      else 
      { 
       if((btn11.getId())==(R.id.btn11)) 
       { 
        btn11.setBackgroundColor(Color.RED); 
       } 
       if((btn10.getId())==(R.id.btn10)) 
       { 
        btn10.setBackgroundColor(Color.RED); 

       } 
       ch=ch-1; 
      } 
     } 
    } 

任何帮助表示赞赏,谢谢提前。

回答

1

阅读可用于按钮的API。这将帮助你解决你的问题。或者你可以通过一个结构来维护按钮的顺序..就像一个HashMap或其他东西,当其中一个按钮点击发生时,然后从数据结构中检索它并将其与答案进行比较。

+0

thanx JoxTraex ...我仔细阅读了APi – user1568346 2012-08-01 19:17:12

0

此代码可以帮助你:

public void onClick(View v) { 
switch(v.getId(){ 
case R.id.btn10: 
if(v.getText().equals("ans")) { 
v.setBackgroundColor(Color.RED); 
} else { 
v.setBackgroundColor(Color.Green); 
} 
break; 
case R.id.btn11: 
break; 
case R.id.btn12: 
break; 
default: 
break; 
} 
+0

谢谢你们的帮助...它的工作bt我也希望如果在点击文本上不匹配它会变成红色,并且按钮的正确文本与字符串匹配自动变成绿色.....这个b如何实现? – user1568346 2012-08-01 19:16:32

2

首先,把你所有的按钮集合中,

Collection<Button> buttons = new HashSet<Button>(); 
buttons.add(findViewById(R.id.btn10); 
buttons.add(findViewById(R.id.btn11); 
... 

如果所有的按钮都在一个共同的容器,你可以不喜欢它,

ViewGroup parent = findViewById(...); 
for (int i = 0, l = parent.getChildCount(); i++) { 
    Button b = (Button) parent.getChildAt(i); 
    buttons.add(b); 
} 

定义一个onClickListener正确设置按钮颜色,

View.OnClickListener ocl = new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     for (Button b: buttons) { 
     if (b.getText().toString().equals(ans)) { 
      b.setBackgroundColor(Color.GREEN); 
     } else { 
      b.setBackgroundColor(Color.RED); 
     } 
     }  
    } 
}; 

设置onClickListener每个按钮的,

for (Button b: buttons) { 
    b.setOnClickListener(ocl); 
} 
+0

谢谢你们的帮助......它的工作bt我也希望如果在点击文本上不匹配它会变成红色,并且具有与字符串匹配的正确文本的按钮会自动变为绿色.....这个b怎么实现?? – user1568346 2012-08-01 19:15:07

+0

看到我的编辑... – 2012-08-01 19:30:20

+0

thanx的代码.... wht我试过n它的工作也是......我已经获取正确答案1st和按钮ID执行所需的操作.... .... thanx的帮助 – user1568346 2012-08-05 12:46:12

0

那么你可以找到this thread您的问题非常有帮助的,他们写一些提示,您可以在您的实现会丢失。就像那个“v”是一个按钮,实际上是你按下的按钮,所以阅读这篇文章将是一个好的开始,祝你好运。

+0

thanx豪尔赫阿吉拉尔...即时通讯尝试代码... hopefuly它的作品... – user1568346 2012-08-01 19:19:19

相关问题