2013-05-28 72 views
-4

我試圖解決這個問題,但我根本無法做到,我現在正在按照新手教程進行操作。我不斷遇到一個帶有while循環的無法訪問的代碼的錯誤,它會經常檢查持有者是否爲真。任何人都可以幫助我呢? 編輯這已經解決了,非常感謝你們的幫助,對我的愚蠢抱歉。Eclispe(Android SDK)中的「無法訪問」代碼錯誤

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); 

     } 
    } 
} 
+0

@ SJuan76哦監管這個...刪除的評論。 –

回答

7

這樣做:

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

正確。但最好也加上{} – BobTheBuilder

+0

ya。同意。但對於單線我們也可以這樣做。爲了清楚起見,我更喜歡括號。 – Arpit

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); 
} 
+0

我會從條件 –

+0

中拿出半科林我同意代碼有一個不正確的縮進,這使得閱讀更加困難,但是如何解決問題? – SJuan76

+0

它根本解決不了它。它只是顯示問題出在哪裏。我現在也添加了明顯的解決方案。 – MicSim

1

您應該刪除;if(!ourHolder.getSurface().isValid())