繁体   English   中英

如何让android程序等到按下两个按钮?

[英]How can I make the android program wait until two buttons are pressed?

我有一个buttonsb1, b2, etc..的列表b1, b2, etc..每个buttons都有一个onclick方法,该方法将一个数字添加到arraylist 我以为加线

while(myArrayList.size()<2){}

将使程序等到单击两个按钮,然后屏幕变为黑色。 为什么会发生这种情况,我该如何解决?

您正在UI线程上执行while循环,这就是屏幕没有响应的原因。 我想说,检查onClick方法中数组的大小,然后在满足条件时运行,运行您正在等待的方法。 像这样:

@Override
public void onClick(View v) {
    switch(v.getId()){
        case R.id.b1:
            list.add(someNumber);
            break;
        case R.id.b2:
            list.add(otherNumber);
            break;
    }
    if (list.size() == 2) {
        yourWaitingMethod();
    }
}

我认为问题在于您的ArrayList最初是空的,除非您在while循环中有向该ArrayList添加元素的内容,否则您将陷于该循环中。

如果要在单击两个按钮时执行某些操作,则可以有两个单独的布尔变量,单击按钮后,每个布尔变量都将设置为true:

// boolean instance variables
boolean button1Clicked = false, button2Clicked = false;

...

// set the OnClickListeners
button1.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        button1Clicked = true;
        doSomething();
    }
});
button2.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        button2Clicked = true;
        doSomething();
    }
});

...

// the method to be called every time you click either button
private void doSomething(){
    if (button1Clicked && button2Clicked){ // but only executes what's inside here unless both buttons were clicked
        // do something
    }
}

希望这对您有所帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM