Java Thread给出了奇怪的错误?

时间:2012-10-04 10:56:15

标签: java android multithreading

对于模糊的描述感到抱歉,我不知道如何解释它。

我正在我的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”之外我收到错误消息

“令牌上的语法错误”}“,删除此令牌”

4 个答案:

答案 0 :(得分:7)

你想要像

这样的东西
new Thread() {
    public void run() {
        // your try-catch-finally block goes here
    }
}

即。你在匿名的Thread类中缺少一个方法声明。

答案 1 :(得分:1)

正确的方法是

 new Thread(new Runnable() {

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

}}).start();

答案 2 :(得分: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

答案 3 :(得分:0)

您正在继承Thread(通过Thread(){}),但您似乎需要一个已定义的方法来覆盖。你的try / catch存在于任何方法之外,我怀疑你需要覆盖run()方法。有关详细信息,请参阅the doc