0

ボタンをクリックした後、私はこのようなことをしようとしています:

case R.id.bcheckConnection:
        if (IPok()) {
            PlcState.ErrPlc = false;
            Constant.adressIpPlc = adresIp.getText().toString();

            final ProgressDialog dialog =     ProgressDialog.show(Main.this, "", "Trying to connect...");
            new Thread(new Runnable() {
                public void run() {
                    timeout = network.testConnection(Constant.adressIpPlc, 102, 20000);
                    dialog.dismiss();
                }
            }).start();

            if (timeout > -1) {
                PlcState.ErrPlc = false;

                stanPolaczenia.setText("Connection established. Timeout = ");
                stanTimeout.setText(Long.toString(timeout));
                currentIp.setText(Constant.adressIpPlc);

            } else {
                PlcState.ErrPlc = true;
                stanPolaczenia.setText("Error");
                stanTimeout.setText("");
                currentIp.setText(Constant.adressIpPlc);
            }
        } else {
            Toast.makeText(Main.this, "Wrong IP", Toast.LENGTH_LONG).show();
        }
        break;

スレッドの実行が停止した後にテキストを変更することは可能ですか?

4

1 に答える 1

1

Thread.join()指定されたスレッドが終了するまで、現在のスレッドをブロックするために使用できます。

Thread myThread = new Thread(new Runnable() {
    public void run() {
       // Do something
    }
});
myThread.start();

// Do some things

// and block current thread until myThread is finished
myThread.join();

// Continue execution after myThread got finished

編集:@Ericが質問のコメントですでに言及しているように:あなたの(例の)状況では、を使用する方が理にかなっているようAsyncTaskです。これには (UI スレッドで呼び出される) 2 つのイベントがあるため、進行状況の更新とタスクの終了時に UI を更新できます。例については、AsyncTask次を参照してください: AsyncTask Android の例

于 2013-01-03T23:28:15.420 に答える