-1

ボタンから開始する単純なスレッドを作成しようとしていますが、問題が発生しました。コードは次のとおりです。

    b1.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) 
        {
            SendInfo si = new SendInfo();
            si.start();
            error.setText(si.getError());

        }
    });

そして、ここにスレッドコードがあります:

package com.example.android.location;

public class SendInfo extends Thread
{
    private String error;

    public void run()
    {
        this.error = "working";
    }
    public String getError(){
        return this.error;
    }   
}

何らかの理由で、最初のコード ブロックのエラー インスタンスが空のままです。

4

3 に答える 3

1

この行の後にスレッドが開始されたという保証はありません

si.start();

errorそのため、期待どおりに設定されることを期待することはできません。あなたのスレッドは見た目ではありませんでした。

また、命令の厄介な並べ替えを防ぐために、メソッドを同期することが賢明です。

この問題全体に対する 1 つの解決策は、メイン スレッドでハンドラーを作成し、スレッドの実行が完了したらメッセージを送信することです。

于 2012-12-20T14:15:34.997 に答える