【发布时间】:2016-05-20 09:10:15
【问题描述】:
变量 i 没有递增,如果答案是正确的,那么我想通过递增变量 i 来问另一个问题。我实现了 OnClickListner 但什么也没发生。我是安卓新手,谢谢。
public class MainActivity extends AppCompatActivity{
ImageView car, icecream, pencil, umbrella, ball;
TextView question, answer;
int i, size, j;
final String[] objects = {"car", "icecream", "pencil", "ball","umbrella"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Animation expandIn = AnimationUtils.loadAnimation(this, R.anim.expand_in);
size = objects.length;
car = (ImageView) findViewById(R.id.car);
umbrella = (ImageView) findViewById(R.id.umbrella);
icecream = (ImageView) findViewById(R.id.icecream);
pencil = (ImageView) findViewById(R.id.pencil);
ball = (ImageView) findViewById(R.id.ball);
question = (TextView) findViewById(R.id.question);
answer = (TextView) findViewById(R.id.answer);
j=0;
for (i=0; i < size; i++)
{
if(i == j){
question.setText("");
question.setText("Where is "+objects[i]+" ?");
car.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
answer.setVisibility(View.VISIBLE);
if("car"==objects[i]){
answer.setText("Right Answer");
answer.setTextColor(Color.parseColor("#008000"));
j++;
car.startAnimation(expandIn);
} else {
answer.setText("Wrong Answer");
answer.setTextColor(Color.RED);
answer.postDelayed(new Runnable() {
public void run() {
answer.setVisibility(View.INVISIBLE);
}
}, 2000);
}
}
});
icecream.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
answer.setVisibility(View.VISIBLE);
if("icecream"==objects[i]){
answer.setText("Right Answer");
j++;
} else {
answer.setText("Wrong Answer");
answer.setTextColor(Color.RED);
answer.postDelayed(new Runnable() {
public void run() {
answer.setVisibility(View.INVISIBLE);
}
}, 2000);
}
}
});
pencil.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
answer.setVisibility(View.VISIBLE);
if("pencil"==objects[i]){
answer.setText("Right Answer");
j++;
} else {
answer.setText("Wrong Answer");
answer.setTextColor(Color.RED);
answer.postDelayed(new Runnable() {
public void run() {
answer.setVisibility(View.INVISIBLE);
}
}, 2000);
}
}
});
ball.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
answer.setVisibility(View.VISIBLE);
if("ball"==objects[i])
{
answer.setText("Right Answer");
j++;
} else {
answer.setText("Wrong Answer");
answer.setTextColor(Color.RED);
answer.postDelayed(new Runnable() {
public void run() {
answer.setVisibility(View.INVISIBLE);
}
}, 2000);
}
}
});
umbrella.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
answer.setVisibility(View.VISIBLE);
if("umbrella"==objects[i]){
answer.setText("Right Answer");
j++;
} else {
answer.setText("Wrong Answer");
answer.setTextColor(Color.RED);
answer.postDelayed(new Runnable() {
public void run() {
answer.setVisibility(View.INVISIBLE);
}
}, 2000);
}
}
});
}
j = j+1;
break;
}
}
【问题讨论】:
-
你不能在循环中设置 OnClickListener()。在 OnClickListener() 方法中迭代循环。
-
你上面的问题可以不用循环解决。此外,循环不会对接口的方法起作用。原因是您的循环已经执行,但您的
OnClickListener()从未被调用。所以最后你总是会得到循环的最大值 -
根据您的代码,“j++”只会在 onClick 调用时发生,这就是为什么 i==j 只会在以后工作一次 i 永远不等于 j 所以它永远不会进入 if(){... .....}
-
感谢您的回复,:)
标签: java android for-loop increment