2012-10-04 71 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