postDelayed OnClickListener 不工作
postDelayed OnClickListener is not working
我正在尝试实现按钮点击延迟,每一秒我都需要从名为 solved_cells
的列表中删除一个项目,该列表最初有 16 个项目。以下是我所做的:
solve_all.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
while (solved_cells.size()>=1) {
v.postDelayed(new Runnable() {
@Override
public void run() {
//Execute code here
solved_cells.remove(solved_cells.size() - 1);
}
}, 1000L);
}
}
});
但每次调试时,我都会看到代码达到:
v.postDelayed(new Runnable() {
并且不涉及 public void run() {
功能,非常感谢您的建议。
我不确切知道你的代码有什么问题,但你可以通过创建 TimerTask 来使用计时器来代替 class
Timer timer;
MyTimerTask timerTask;
private class MyTimerTask extends TimerTask {
@Override
public void run() {
try {
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
if (solved_cells.size() > 0) {
solved_cells.remove(solved_cells.size() - 1);
} else {
timer.cancel();
timer.purge();
}
}
});
} catch (Exception e) {
// e.printStackTrace();
}
}
}
在你的监听器中你可以像这样声明它
solve_all.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
timerTask = new MyTimerTask();
Timer t = new Timer();
t.schedule(timerTask , 1000L);
}
});
我正在尝试实现按钮点击延迟,每一秒我都需要从名为 solved_cells
的列表中删除一个项目,该列表最初有 16 个项目。以下是我所做的:
solve_all.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
while (solved_cells.size()>=1) {
v.postDelayed(new Runnable() {
@Override
public void run() {
//Execute code here
solved_cells.remove(solved_cells.size() - 1);
}
}, 1000L);
}
}
});
但每次调试时,我都会看到代码达到:
v.postDelayed(new Runnable() {
并且不涉及 public void run() {
功能,非常感谢您的建议。
我不确切知道你的代码有什么问题,但你可以通过创建 TimerTask 来使用计时器来代替 class
Timer timer;
MyTimerTask timerTask;
private class MyTimerTask extends TimerTask {
@Override
public void run() {
try {
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
if (solved_cells.size() > 0) {
solved_cells.remove(solved_cells.size() - 1);
} else {
timer.cancel();
timer.purge();
}
}
});
} catch (Exception e) {
// e.printStackTrace();
}
}
}
在你的监听器中你可以像这样声明它
solve_all.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
timerTask = new MyTimerTask();
Timer t = new Timer();
t.schedule(timerTask , 1000L);
}
});