我的GUI中有两个按钮。 “一转”和“自动播放”。我希望AUTO PLAY按钮开始自动按下计时器上的ONE TURN按钮,我最终将使用滑块或其他东西控制其速度。但是,我想要它,以便当我再次按AUTO PLAY按钮时,它会停止自动激活第一个按钮。自动播放有效,但是停止自动播放无效,并且我不知道如何停止它。也许我完全使用了错误的解决方案,或者也许我只是不知道如何正确停止可运行程序?任何帮助将不胜感激,我已经进行了很多搜索并且没有发现任何有用的东西。我的自动播放点击代码如下:
public void autoClick(final View view) {
final Handler handler = new Handler();
isAutoPlaying = !isAutoPlaying;
final View dummyView = view;
Runnable runnable = null;
if(isFirstAutoPlayClick) {
runnable = new Runnable() {
@Override
public void run() {
onClick(dummyView);
handler.postDelayed(this, 1000);
}
};
isFirstAutoPlayClick = !isFirstAutoPlayClick;
}
if(isAutoPlaying) {
Toast.makeText(MainActivity.this,"isAutoPlaying is true", Toast.LENGTH_SHORT).show();
handler.post(runnable);
} else {
Toast.makeText(MainActivity.this,"isAutoPlaying is false", Toast.LENGTH_SHORT).show();
handler.removeCallbacks(null);
}
}
这里是一张GUI
谢谢您的时间。
编辑您还需要将处理程序局部变量移动到类字段。
public class Activity{
Handler handler = new Handler(); //<-- Put it here
public void autoClick(final View view) {
final Handler handler = new Handler(); //<-- Remove this
...
}
}
因此,在调用handler.removeCallbacksAndMessages()
时,您引用的是初始处理程序,而不是新的实例