【问题标题】:Duplicate branch in 'switch'. How to avoid the warning“开关”中的重复分支。如何避免警告
【发布时间】:2021-10-17 09:11:25
【问题描述】:

我在 Android 应用中有一个 MotionEvent 代码。 当我松开最后一根手指(ACTION_UP)时,它有条件,当我松开手指但任何其他手指仍在屏幕上时(ACTION_POINTER_UP)。所以,这是两种不同的情况,我需要在这两种情况下运行代码。 但是编译器告诉我,我有完全相同的代码,并提议将这两个部分合并为一个。

我怎样才能避免这个警告?

有一个代码:

switch (event.getAction() & MotionEvent.ACTION_MASK) {
            case MotionEvent.ACTION_DOWN: // first touch
                // some code for a touch
                break;
            case MotionEvent.ACTION_POINTER_DOWN: // second and more touch
                // some code for a second touch
                break;
            case MotionEvent.ACTION_MOVE:
                // code when the finger moves
                break;
            case MotionEvent.ACTION_UP:

                // left side
                if (event.getPointerId(event.getActionIndex()) == fingerOnALeftSide) {
                    Log.d("tag", "Now we release the finger that was on a left side");
                    leftFingerInTouch = false;
                }

                // right side
                if (event.getPointerId(event.getActionIndex()) == fingerOnARightSide) {
                    Log.d("tag", "Now we release the finger that was on a right side");
                    myBluetooth.send(COMMAND_STOP_ENGINE);
                }
                break;
            case MotionEvent.ACTION_POINTER_UP:

                // left side
                if (event.getPointerId(event.getActionIndex()) == fingerOnALeftSide) {
                    Log.d("tag", "Now we release the finger that was on a left side");
                    leftFingerInTouch = false;
                }

                // right side
                if (event.getPointerId(event.getActionIndex()) == fingerOnARightSide) {
                    Log.d("tag", "Now we release the finger that was on a right side");
                    myBluetooth.send(COMMAND_STOP_ENGINE);
                }
                break;
            default:
                break;
        }

【问题讨论】:

  • "...提议将这两个部分合并为一个。" 这就是你应该做的。
  • 如果我(自动)合并它,它会完全删除 ACTION_UP 条件,所以我的代码不会在这种情况下运行。
  • 嗯..它的工作......好吧)

标签: android switch-statement motionevent


【解决方案1】:

它看起来像这样并且有效。

            case MotionEvent.ACTION_UP:
            case MotionEvent.ACTION_POINTER_UP:

                // left side
                if (event.getPointerId(event.getActionIndex()) == fingerOnALeftSide) {
                    Log.d("tag", "Now we release the finger that was on a left side");
                    leftFingerInTouch = false;
                }

                // right side
                if (event.getPointerId(event.getActionIndex()) == fingerOnARightSide) {
                    Log.d("tag", "Now we release the finger that was on a right side");
                    myBluetooth.send(COMMAND_STOP_ENGINE);
                }
                break;
            default:
                break;

【讨论】:

    猜你喜欢
    • 2023-04-10
    • 2016-12-25
    • 2021-02-04
    • 1970-01-01
    • 1970-01-01
    • 2021-04-29
    • 1970-01-01
    • 1970-01-01
    • 2020-05-17
    相关资源
    最近更新 更多