2012-10-04 101 views
0

對於模糊的描述很抱歉,我不知道如何解釋它。Java線程給出奇怪的錯誤?

我在我的Android/Java應用程序中創建一個線程,代碼很簡單,但它不斷髮出一個奇怪的錯誤?

final Thread buttonPress = new Thread(){ //X 
    try { 
     findViewById(R.id.button1).setBackgroundResource(R.drawable.button1_down); 
     wait(500); 
    } catch (InterruptedException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } finally { 
     findViewById(R.id.button1).setBackgroundResource(R.drawable.button1); 
    } 
}; //XX 

而且在那裏我標誌着/ X我得到錯誤信息

「多個標記在該行 - 語法錯誤,插入‘}’來完成ClassBody - 語法錯誤,插入‘;’來完整LocalVariableDeclarationStatement」

而在線程結束,除了‘// XX’我得到錯誤信息,

‘語法令牌‘}’的錯誤,刪除此令牌’

回答

7

你想要的東西像

new Thread() { 
    public void run() { 
     // your try-catch-finally block goes here 
    } 
} 

即你缺少你的匿名Thread類的方法聲明。

0

你繼承Thread(通過Thread(){}),但你似乎需要內定義的方法覆蓋。您的try/catch存在於任何方法之外,我懷疑您需要覆蓋run()方法。有關更多信息,請參見the doc

1

正確的方法來做到這一點是

new Thread(new Runnable() { 

@Override 
public void run() { 
    // TODO Auto-generated method stub 

}}).start(); 
1

你錯過了你的run()方法。所以你把你的代碼改爲:

final Thread buttonPress = new Thread() { // X 
      public void run() { 
       try { 
        findViewById(R.id.button1).setBackgroundResource(R.drawable.button1_down); 
        wait(500); 
       } catch (InterruptedException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } finally { 
        findViewById(R.id.button1).setBackgroundResource(R.drawable.button1); 
       } 
      } 
     }; // XX