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 に答える