对于模糊的描述感到抱歉,我不知道如何解释它。
我正在我的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”之外我收到错误消息
“令牌上的语法错误”}“,删除此令牌”
答案 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。