我有一个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
}发布于 2012-09-25 09:33:09
你不需要循环。
一旦有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
}
}
};发布于 2012-09-25 09:34:51
在我看来,理想的解决方案是使用信号量:
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线程上运行。
发布于 2012-09-25 09:30:50
你想做这样的事-
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
https://stackoverflow.com/questions/12575082
复制相似问题