Android中的难以理解的声明

时间:2015-08-02 21:12:47

标签: android

我是Android的新手,我正在尝试使用在线教程创建一个简单的应用程序来制作单点触控绘画应用程序。其中包含以下代码

    @Override
    public boolean onTouchEvent(MotionEvent event){
        float eventX = event.getX();
        float eventY = event.getY();

        switch (event.getAction()){
            case MotionEvent.ACTION_DOWN:
                path.moveTo(eventX, eventY);
                return true;
            case MotionEvent.ACTION_MOVE:
                path.lineTo(eventX, eventY);
                return true;
            default:
                return false;
        }

        invalidate();
        return true;
    }

但是在运行应用程序时,我收到了为invalidate()调用unreacheble语句的错误;陈述我错过了什么,请帮我解决。

错误:

Note: E:\android_projects\Closertotheedge\app\src\main\java\yubrajpokharel\com\closertotheedge\Game.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Error:(53, 9) error: unreachable statement
Error:Execution failed for task ':app:compileDebugJava'.
> Compilation failed; see the compiler error output for details.

4 个答案:

答案 0 :(得分:1)

在您的开关块中,每个案例都会返回,这就是为什么无法达到以下所有代码的原因

答案 1 :(得分:0)

你的switch语句中有3个case,每个return都有一个default语句(包括switch),因此没有{{1}的路径这不会导致函数返回。

根据您要执行的操作,您可以删除至少一个case中的内部回报。

答案 2 :(得分:0)

无论你的应用程序使用switch语句的哪个分支,它都会返回,这意味着将永远不会运行invalidate命令(因为从方法返回结束该方法的执行)。

要解决这个问题,请不要在switch语句中返回true - 只有在调用invalidate()后才能返回true。你应该可以在那里留下返回false,因为这将捕获不需要使画布无效的任何其他事件。

答案 3 :(得分:0)

默认情况中删除语句return false;