1

私はこのプログラムにしばらく取り組んできました。複数のボタンの問題を処理する方法に行き詰まりました。異なるスレッドを開始する必要がある 3 つのボタンがありますが、Google でスレッド化とマルチスレッド化について調べましたが、探していた答えが見つかりませんでした。私の理解では、 public void run() はスレッドのクラスで一度しか呼び出せませんか? 1 つのクラスでコードが異なる複数のスレッドを作成するにはどうすればよいですか?

私の問題に対する最良の解決策であると私が見たものの例は次のとおりです。

@Override
public void onClick(View v) {
    // TODO Auto-generated method stub
    switch (v.getId()) {
    case R.id.Line:
       // Call to Thread line
        break;
    case R.id.Enter:
        //Call to Thread Enter
            break;
    case R.id.arc
    //Call to Thread Arc
        } 

ラインスレッドとエンタースレッドの例:

        Thread enter = new Thread() {
        public void run() {
    DrawingUtils call = new DrawingUtils();
    EditText cl = (EditText) findViewById(R.id.editText1);
    String in = cl.getText().toString();
    call.setInputCoords(in);
    notifyAll();
        }

};

        Thread line = new Thread() {
        public void run() {
            info.setText("Enter X,Y,Z for Point 1");
            try {
                wait();
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            call.addLine();
            info.setText("Enter X,Y,Z for Point 2");
            try {
                wait();
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            call.addLine();


        }
    };
    line.start();
4

2 に答える 2

1

スレッドを拡張する別の内部クラスを作成します

    class Line extends Thread {
        public void run() {
    DrawingUtils call = new DrawingUtils();
    EditText cl = (EditText) findViewById(R.id.editText1);
    String in = cl.getText().toString();
    call.setInputCoords(in);
    notifyAll();
        }

};

今すぐ使い始めるnew Line().start()

于 2013-06-21T04:13:23.633 に答える
0

起動した新しいスレッドでUIを正常に更新できません..開発の前にUIについてもっと読んでください.....これはあなたを助けるかもしれません

コードでテキスト ビューのテストを設定するには

info.post(new Runnable() {
 @Override
    public void run() {
       info.setText("Enter X,Y,Z for Point 1"); 
    }
});
于 2013-06-21T04:22:16.630 に答える