gpt4 book ai didi

java - 将循环切换到 for : why is every case true?

转载 作者:搜寻专家 更新时间:2023-11-01 08:04:19 24 4
gpt4 key购买 nike

for(int i = 0; i <= lvl-1; ++i) {

id = sequence.get(i);

switch(id) {
case 1:
sq1.setBackgroundResource(R.drawable.square_show);

hnd.postDelayed(new Runnable() {
public void run() {
sq1.setBackgroundResource(R.drawable.square);
}
}, 2000);

break;
case 2:
sq2.setBackgroundResource(R.drawable.square_show);

hnd.postDelayed(new Runnable() {
public void run() {
sq2.setBackgroundResource(R.drawable.square);
}
}, 2000);

break;
case 3: ...

你知道为什么当这个圆圈通过时,每一个情况都是真的吗?就好像 var "id"是 1, 2, 3 AND 4 AND 5 和其他的一样

代码不会在每个循环之间等待 2 秒,而是在第一个循环中将它们设为真

最佳答案

好的,我看到这引起了很多关注。正如 JustWork 所说,您正在执行 for 循环并且所有情况都会立即处理,您只是在创建 N 个等待 2 秒然后执行的线程。正如我已经说过的,您可以通过在发布延迟时间添加 2000 * i 来应用简单的 hack。像这样

case 1:
sq1.setBackgroundResource(R.drawable.square_show);

hnd.postDelayed(new Runnable() {
public void run() {
sq1.setBackgroundResource(R.drawable.square);
}
}, 2000 * (i + 1));

这意味着您将同时创建所有线程,并且每个线程都将等待 2 秒才能显示。 i + 1 是 i 为零时的时间。

希望这对您有所帮助,祝您工作愉快。

关于java - 将循环切换到 for : why is every case true?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16600026/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com