我有一个buttons
,b1, b2, etc..
列表,每个列表都有一个onclick
方法,可以为arraylist
添加一个数字。我以为添加了这行
while(myArrayList.size()<2){}
会使程序等到单击两个按钮,但屏幕变黑。为什么会发生这种情况,我该如何解决?
答案 0 :(得分:4)
您正在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();
}
}
答案 1 :(得分:2)
我认为问题在于你的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
}
}
希望这有帮助!