0

私は 3 を持っていButtonsます。

のいずれかをクリックすると、テキストが変数内の 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

Read the APIs that are available for Button. This will help you solve your problem. Or you could just maintain the order of the Buttons via a Structure.. like a Hashmap or something, when one of the button clicks happens, then you retrieve it from the Datastructure and compare it with the answer.

于 2012-08-01T15:58:52.127 に答える
0

このスレッドは問題解決に非常に役立ちます。彼らは、実装に欠けているかもしれないいくつかのヒントを書いています。その「v」はボタンであり、実際にはあなたが押したボタンなので、その投稿を読むことは良いスタートです、頑張ってください.

于 2012-08-01T16:03:06.460 に答える
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 に答える