0

我有 3Buttons

当我单击任何一个时,如果文本与变量中的 a匹配Buttons,我希望改变的颜色ButtonButtonStringString ans;发生变化。

有人能帮我吗?

这是我尝试过的:

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;
            }
        }
    }

任何帮助表示赞赏,在此先感谢。

4

4 回答 4

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);
}
于 2012-08-01T16:02:36.443 回答
1

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

于 2012-08-01T15:58:52.127 回答
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;
}
于 2012-08-01T16:00:46.823 回答
0

好吧,您会发现这个线程对您的问题非常有帮助,他们写了一些您在实现中可能缺少的提示。就像那个“v”是一个按钮,实际上是你按下的按钮,所以阅读那篇文章将是一个好的开始,祝你好运。

于 2012-08-01T16:03:06.460 回答