等到按下按钮

时间:2018-01-24 16:27:11

标签: android

应用程序有一个循环来填充字节数组(无限次直到按下按钮,但停止它正在工作),并且活动中有6个(图像)按钮。第一个ImageButton应插入数组0,第二个应插入1,依此类推。

活动和主题:

public class TestMap extends AppCompatActivity {
  volatile private ImageButton a;
  volatile private ImageButton b;
  volatile private ImageButton c;
  volatile private ImageButton d;
  volatile private ImageButton e;
  volatile private ImageButton f;
  private boolean round0 = false;
  private static volatile boolean stop = false;


@Override
  protected void onCreate(Bundle savedInstanceState) {
    a = findViewById(R.id.flag_a);
    b = findViewById(R.id.flag_b);
    c = findViewById(R.id.flag_c);
    d = findViewById(R.id.flag_d);
    e = findViewById(R.id.flag_e);
    f = findViewById(R.id.flag_f);
    Button end = findViewById(R.id.endturn);

    new Thread(new Runnable() {
        public void run() {
            while (!stop){
                round0 = true;
                for(int i = 0; i < squad_0.length; i++){
                        squad_0[i] = set_sqm0();
                }
            }
        }
    }).start();
    round0 = false;
}

这会停止循环(和工作):

public void endt(View view){
    stop = true;
}

不工作的部分:

public Byte set_sqm0() {
    selected = 0;  //default value

    a.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            selected = 0;
        }
    });

   //the same is for b-f, the selected value is 1-5
    return selected;
}

即使我删除默认值或将按钮的值编辑为6,程序也会在没有按任何按钮的情况下将数组填入0,即使有人帮助我如何暂停程序直到用户按下按钮?

1 个答案:

答案 0 :(得分:1)

首先你不需要也不应该在 set_sqm0()中调用 a.setOnClickListener(...),因为这会在每次通过while循环时连续执行你的线程。同样适用于 selected = 0 的初始化,这也是在while循环的每次迭代中执行,在按下按钮后将选择重置为0。在创建线程之前,您应该移动 setOnClickListener()调用以及 onCreate()中所选的初始化。