Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如果以前单击过其他按钮,如何防止onClick_Java_Android - Fatal编程技术网

Java 如果以前单击过其他按钮,如何防止onClick

Java 如果以前单击过其他按钮,如何防止onClick,java,android,Java,Android,我有4个按钮可以改变视图的移动方向(上、右、下、左)。 这场运动被称为: handler.postDelayed(new Runnable() { @Override public void run() { move(); handler.postDelayed(this, delay); } }, delay); 我想防止用户改变方向,如果以前的方向是相反的。但在我的应用程序中,当你向右移动时,按

我有4个按钮可以改变视图的移动方向(上、右、下、左)。 这场运动被称为:

handler.postDelayed(new Runnable() {
    @Override
        public void run() {
            move();
            handler.postDelayed(this, delay);
        }
    }, delay);
我想防止用户改变方向,如果以前的方向是相反的。但在我的应用程序中,当你向右移动时,按下向上键,然后快速向左移动,这会导致视图向左移动。在这种情况下,理想的行为是视图向上移动,而不是向左移动

这就是
move()
的样子:

public void move() {
    switch(direction) {
        case 'N': moveUp();
            break;
        case 'E': moveRight();
            break;
        case 'S': moveDown();
            break;
        case 'W': moveLeft();
            break;
    }
}
这是
onClick()

如何检查视图实际移动的方向?将上一个值保存在单独的变量中不起作用,因为您只需快速按下按钮,变量的值就不会有正确的值


我已经尝试为
onClick()
添加了一个带有
postdelayed()
的处理程序,但没有成功。

诀窍是在实际的
move()
方法中保存上一个移动方向。因此,您的
move()
方法可能如下所示:

public void move() {
    switch(direction) {
        case 'N': if (lastDirection != 'S') moveUp();
            break;
        ...
    }
    lastDirection = direction;
}

哦,请为方向创建一个枚举。你会发现它比Chars好得多。

诀窍是在实际的
move()
方法中保存上一个移动方向。因此,您的
move()
方法可能如下所示:

public void move() {
    switch(direction) {
        case 'N': if (lastDirection != 'S') moveUp();
            break;
        ...
    }
    lastDirection = direction;
}

哦,请为方向创建一个枚举。您会发现它比Chars好用得多。

非常感谢!这对我有用。它应该是
if(lastDirection!=“S”)
Right,sry,fixed。非常感谢!这对我有用。它应该是
if(lastDirection!=“S”)
Right,sry,fixed。