Eclipse中的“无法访问”代码错误(Android SDK)[关闭]

问题描述 投票:-4回答:4

我正在跟随新闻波士顿的教程。我一直遇到错误与无法访问的代码与while循环,这是不断检查持有人是否为真。

编辑这已经解决了。

    SurfaceHolder ourHolder;
    Thread ourThread = null;
    boolean isRunning = true;

    public MyBringBackSurface(Context context) {
        super(context);
        ourHolder = getHolder();
        ourThread = new Thread(this);
        ourThread.start();
    }

    public void pause(){
        isRunning = false;
        while(true){
            try {
                ourThread.join();
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            break;
        }
        ourThread = null;
    }
    public void resume(){
        isRunning = true;
        ourThread = new Thread(this);
        ourThread.start();
    }


    @Override
    public void run() {
        // TODO Auto-generated method stub
        while(isRunning){
            if(!ourHolder.getSurface().isValid());
                continue;   

                Canvas canvas = ourHolder.lockCanvas(); //Unreachable code
                canvas.drawRGB(02, 02, 150);
                ourHolder.unlockCanvasAndPost(canvas);
        }
    }
}
java
4个回答
7
投票

这样做:

   if(!ourHolder.getSurface().isValid())   // remove semicolon 
            continue; 

1
投票

你应该在;之后删除if(!ourHolder.getSurface().isValid())


1
投票

你真的应该添加更多的信息(哪一行是显示的错误),但这让我很奇怪

if (!ourHolder.getSurface().isValid());
   continue;

你正在做一个条件,如果为true,则不执行任何操作。可能它就像是

if (!ourHolder.getSurface().isValid())
   continue;

更好的是,使用括号,(当然还有适当的缩进)

if (!ourHolder.getSurface().isValid()) {
   continue;
}

本质上,由于continue;不在if声明中,它将始终执行。这将退出循环,使循环代码的其余部分无用,因为它永远不会被执行。由于编译器知道这样的代码可能是编程错误的结果,因此会引发错误警告程序员。


1
投票

您的代码格式错误。它应该是:

while(isRunning){
    if(!ourHolder.getSurface().isValid()) {
        continue;   // without brackets it's always continue, regardless of the if
    }

    Canvas canvas = ourHolder.lockCanvas(); //Unreachable code
    canvas.drawRGB(02, 02, 150);
    ourHolder.unlockCanvasAndPost(canvas);
}
© www.soinside.com 2019 - 2024. All rights reserved.