Java Eclipse(Android SDK)中的“不可访问”代码错误
我现在正在跟随纽伯顿的一个教程。我在while循环中不断遇到无法访问的代码错误,这是为了不断检查holder是否为true 编辑此问题已解决Java Eclipse(Android SDK)中的“不可访问”代码错误,java,Java,我现在正在跟随纽伯顿的一个教程。我在while循环中不断遇到无法访问的代码错误,这是为了不断检查holder是否为true 编辑此问题已解决 SurfaceHolder ourHolder; Thread ourThread = null; boolean isRunning = true; public MyBringBackSurface(Context context) { super(context); ourHolder
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);
}
}
}
这样做:
if(!ourHolder.getSurface().isValid()) // remove semicolon
continue;
您真的应该添加更多信息,哪一行显示的是错误,但这让我觉得非常奇怪
if (!ourHolder.getSurface().isValid());
continue;
如果为true或false,您正在执行的条件也不会执行任何内容。可能是这样的
if (!ourHolder.getSurface().isValid())
continue;
更好的是,使用括号,当然,还有适当的缩进
if (!ourHolder.getSurface().isValid()) {
continue;
}
从本质上说,自那以后,继续;不在if语句中,它将始终执行。这将退出循环,使循环代码的其余部分无用,因为它永远不会被执行。由于编译器知道此类代码可能是编程错误的结果,因此会抛出一个错误来警告程序员。您的代码格式错误。应改为:
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);
}
你应该把它移走;如果之后!我们的holder.getSurface.isValid正确。但最好也加上{}ya。同意。但对于单行,我们也可以这样做。为了清楚起见,我更喜欢括号。我会从条件中去掉半科林。我同意代码有错误的缩进,这使得阅读更困难,但这如何解决问题?它根本解决不了问题。它只是说明了问题所在。我现在还添加了显而易见的解决方案。@SJuan76 Oh监督了。。。删除了评论。