-1

我正在开发一个示例游戏应用程序,其中我需要随机更改四个​​按钮图像。因为,我正在使用以下逻辑。但是,我无法更改开关盒中的按钮背景。所以,请指导我在哪里出错。谢谢你。

xml布局

<LinearLayout
    android:layout_height="match_parent"
    android:layout_width="fill_parent"
    android:orientation="horizontal"
    android:gravity="center"  
    >

    <Button
        android:id="@+id/b1"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
       android:background="@drawable/white"
        />
        <Button
        android:id="@+id/b2"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:background="@drawable/white"
        />
        <Button
        android:id="@+id/b3"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
       android:background="@drawable/white"
        />
        <Button
        android:id="@+id/b4"
        android:layout_height="wrap_content"
       android:layout_width="wrap_content"
        android:background="@drawable/white"
        />
    </LinearLayout>

java类

public class MainActivity extends Activity implements OnClickListener {
    private Button b1,b2,b3,b4;
    ArrayList<Integer> numbers = new ArrayList<Integer>();   
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        b1=(Button)findViewById(R.id.b1);
        b2=(Button)findViewById(R.id.b2);
        b3=(Button)findViewById(R.id.b3);
        b4=(Button)findViewById(R.id.b4);

        b1.setOnClickListener(this);
        b2.setOnClickListener(this);
        b3.setOnClickListener(this);
        b4.setOnClickListener(this);

        //random numbers are 0,1,2,3 

        Random randomGenerator = new Random();
        while (numbers.size() < 4) {

            int random = randomGenerator .nextInt(4);
            if (!numbers.contains(random)) {
                numbers.add(random);
            }
        }


        startScan();

          }


     public void startScan() {
        new Thread() {
            public void run() {
                for(int i=0;i<numbers.size();i++){
                    try{
                        Thread.sleep(3000);
                        int id=numbers.get(i);
                    alterImages(id);
                }catch(Exception e){
                    }
                }
            }


        }.start();
    }


    private void alterImages(int id) {
        // TODO Auto-generated method stub
        Log.e("id value is in switch case",""+id);
        switch(id)
        {
        case 0: {
            b1.setBackgroundResource(R.drawable.green);  //its not working 
            Log.e("id is....","case 0");                 // its is printing
            break;
                }

        case 1: {
            b2.setBackgroundResource(R.drawable.blue);
            Log.e("id is....","case 1");
            break;
                }

        case 2 :
                {
             b3.setBackgroundResource(R.drawable.red);
             Log.e("id is....","case 2");
            break;
                }

                default :
               b4.setBackgroundResource(R.drawable.yellow);
               Log.e("id is....","DEFAULT");
                break;
        }
    }
4

2 回答 2

0

尝试使用:

b1.setBackgroundColor(getResources().getColor(R.color.myColor))

并像这样在 Strings.xml 中定义颜色而不是可绘制对象:

<color name="myColor">#AA99AA</color>
于 2013-04-16T11:04:22.043 回答
0

尝试删除所有这些行: android:background="@drawable/white"

从 XML 并在类中设置此默认背景值。

也许 XML 在您的情况下具有优先权,并且始终显示为白色。

于 2013-04-16T07:39:48.063 回答