Android 为什么交通灯坏了

Android 为什么交通灯坏了,android,Android,我做了这段代码,想让一个交通灯打开和关闭几次,然后停下来,随机选择两个灯中的一个,但程序会执行该操作,但不会像操作那样显示不断变化的灯 private ImageView redLight; private ImageView greenLight; private Button Button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceSt

我做了这段代码,想让一个交通灯打开和关闭几次,然后停下来,随机选择两个灯中的一个,但程序会执行该操作,但不会像操作那样显示不断变化的灯

private ImageView redLight;
private ImageView greenLight;
private Button Button;



@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);


    setContentView(R.layout.traffic_lights);


    redLight = (ImageView) findViewById(R.id.red_light);
    greenLight = (ImageView) findViewById(R.id.green_light);
    Button = (Button) findViewById(R.id.start_button);


    // Assign click listeners to buttons
    Button.setOnClickListener(this);

}


@Override
public void onClick(View v) {
    if (v == Button) {
        int flag = 0;
        for (int i = 0; i <= 100; i++) {
            if (flag == 0) {
                turnOnRedLight();
                try {
                    Thread.sleep(100);
                } catch (InterruptedException ex) {
                    Thread.currentThread().interrupt();
                }
                Log.i("Traffic", "Red");
                flag = 1;
            } else {
                turnOnGreenLight();
                try {
                    Thread.sleep(100);
                } catch (InterruptedException ex) {
                    Thread.currentThread().interrupt();
                }
                Log.i("Traffic", "Green");
                flag = 0;
            }
        }
    }

}



private void turnOnRedLight() {
    redLight.setImageResource(R.drawable.red_on);
}

private void turnOnGreenLight() {
    greenLight.setImageResource(R.drawable.green_on);
}
private ImageView红灯;
私家影景绿灯;
私人按钮;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(右布局、交通灯);
红灯=(图像视图)findViewById(R.id.红灯);
绿灯=(图像视图)findViewById(R.id.绿灯);
按钮=(按钮)findViewById(R.id.start\u按钮);
//将单击侦听器指定给按钮
setOnClickListener(此);
}
@凌驾
公共void onClick(视图v){
如果(v==按钮){
int标志=0;

对于(inti=0;i你只睡了100毫秒,因此你可能看不到灯光的变化。将其更改为1000甚至500左右,你可能会看到变化

Thread.sleep(1000);
还有,几张便条

  • 虽然使用此代码可能没有问题,但在
    UI线程上睡眠通常不是一个好主意。使用
    线程
    并使用
    runOnUiThread()
    更新
    UI
    ,使用
    AsyncTask
    Handler
  • 不要将你的
    按钮命名为“按钮”。将它命名为非Android关键字的名称,如
    按钮
    btn
    开始按钮
    开始按钮
    ,或类似的名称
  • 在区分单击了哪个
    按钮时,请使用
    按钮
    id
    而不是
    对象
    。因此,您可能希望将其更改为

     @Override
    public void onClick(View v) {   
    if (v.getId() == (R.id.start_button)) {
    

  • 您也可以在此处使用
    switch
    语句,但这并不重要。

    它的作用是什么?