0

很抱歉描述模糊,我不知道如何解释。

我正在我的 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

4 回答 4

7

你想要类似的东西

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

即您在匿名 Thread 类中缺少方法声明。

于 2012-10-04T10:58:11.000 回答
1

正确的做法是

 new Thread(new Runnable() {

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

}}).start();
于 2012-10-04T11:02:59.210 回答
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
于 2012-10-04T11:03:03.563 回答
0

您正在继承Thread(通过Thread(){}),但您似乎需要在其中定义一个方法来覆盖。您的 try/catch 存在于任何方法之外,我怀疑您需要覆盖该run()方法。有关更多信息,请参阅文档

于 2012-10-04T10:58:32.083 回答