-4

現在、thenewboston によるチュートリアルに従っています。ホルダーが真かどうかを常にチェックする 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);
        }
    }
}
4

4 に答える 4

7

このようにします:

   if(!ourHolder.getSurface().isValid())   // remove semicolon 
            continue; 
于 2013-05-28T11:21:26.587 に答える
1

あなたは本当にもっと情報を追加する必要があります(どの行にエラーが表示されていますか)が、これは非常に奇妙に思えます

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

true または false の場合、何も実行しない条件を実行しています。おそらくそれは次のようなものです

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

いっそのこと、ブラケットを使用してください (そして、もちろん、適切なインデント)

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

本質的に、はステートメントにcontinue;含まれていないため、常に実行されます。ifこれによりループが終了し、残りのループ コードは実行されないため役に立たなくなります。コンパイラは、そのようなコードがプログラミング エラーの結果である可能性が高いことを認識しているため、エラーをスローしてプログラマに警告します。

于 2013-05-28T11:21:52.230 に答える
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);
}
于 2013-05-28T11:21:52.603 に答える
1

;アフターを削除する必要がありますif(!ourHolder.getSurface().isValid())

于 2013-05-28T11:21:53.153 に答える