我有一个for循环,但我需要它停止做任何事情,直到我收到用户的响应(也就是用户选择左或右)。我在Android中这样做,但我不确定最好的方法。 “左”和“右”是图像。因此,在继续前进之前,我正在听左或右击。我需要循环大约50次。这是我到目前为止所做的。
int testlength = 50;
for (int i = 0; i < testlength; i++) {
left.setImageResource(R.drawable.left);
right.setImageResource(R.drawable.right);
//Stop the for loop and get the input from the user
}
答案 0 :(得分:2)
我认为理想的解决方案是使用信号量:
class Example {
private Semaphore sem;
public Example() {
sem = new Semaphore(0);
}
public void onClick(...) {
// Do stuff
sem.release();
}
public void myLoop() {
int testlength = 50;
for (int i = 0; i < testlength; i++) {
left.setImageResource(R.drawable.left);
right.setImageResource(R.drawable.right);
sem.acquire();
}
}
}
请记住,这假设myLoop未在UI线程上运行。
答案 1 :(得分:1)
您不需要循环。
只要有50个回复,就退出例行程序:
int count = 0;
String[] responses = new String[50];
left.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
left.setImageResource(R.drawable.left);
right.setImageResource(R.drawable.right);
responses[count] = "Left";
count++;
if(count == 50)
{
// Exit the activity
}
}
};
right.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
left.setImageResource(R.drawable.left);
right.setImageResource(R.drawable.right);
responses[count] = "Right";
count++;
if(count == 50)
{
// Exit the activity
}
}
};
答案 2 :(得分:0)
你想做这样的事情 -
ImageView img = (ImageView) findViewById(R.id.myImageId);
img.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// your code here
}
});
也就是说,您希望使用事件而不是循环等待某人点击。紧循环通常是一个讨厌的想法。
我从这个帖子中获取了代码 - how to apply click event listener to image in android