5

私のアプリには 3 つのボタンがあり、1 つのボタンをクリックするとスレッドが呼び出されて開始されます。これは、edittext 文字列をスレッドに入力し、それに何らかの作業を行ってから UI スレッドに戻すことです。それを表示したり、opengl に入れてオブジェクトを表示したりできます。私はハンドルについて読んだことがありますが、完全に理解しているかどうかはわかりません。また、独自のハンドラー コードを作成する方法を誰かが知っているかどうかもわかりません。また、私は非同期について読みましたが、それが私のアプリに役立つとは思いません(私のアプリに役立つかどうかの個人的な意見を教えてください) 私の質問は、入力が行に押されたときに UI edittext から情報を取得する方法ですDrawingUtils クラスのスレッドで作業が行われ、UI に戻って表示または openGl プログラムに入力されますか?

MainActivity クラスは次のとおりです。

  public class MainActivity extends Activity implements OnClickListener {
    EditText cl;
    TextView info;
    Button enter;
    Button line;
    Button arc;
    Line callLine = new DrawingUtils.Line();
    Enter callEnter = new DrawingUtils.Enter();
    Arc callArc = new DrawingUtils.Arc();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        info = (TextView) findViewById(R.id.info);
        enter = (Button) findViewById(R.id.enter);
        line = (Button) findViewById(R.id.line);
        arc = (Button) findViewById(R.id.arc); 

        Handler UIhandler = new Handler() {
              @Override
              public void handleMessage(Message msg) {
                  Bundle bundle = msg.getData();
                    String string = bundle.getString("myKey");

                 }
             };

    }

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        switch (v.getId()) {
        case R.id.enter:
             callEnter.start();
            break;
        case R.id.line:
            callLine.start();
            break;
        case R.id.arc:
            callArc.start();
            break;
        }

    };

}

DrawingUtils クラスは次のとおりです。

    public class DrawingUtils {
    MainActivity handle = new MainActivity();

    // Thread classes for buttons
    public static class Enter extends Thread {
        Thread enter = new Thread() {
            public void run() {

            }

        };

        public static class Line extends Thread {
            Thread line = new Thread() {
                public void run() {

                }
            };

        }

        public static class Arc extends Thread {
            Thread arc = new Thread() {
                public void run() {

                }
            };
        }
    }
}
4

1 に答える 1

6
public class MyActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstance) {
        // ....
        Handler myHandler = new Handler() {
            @Override
            public void handleMessage (Message msg) {
                doCoolStuffWhenMessageReceived();
            }
        }
        MySecondClass secondClass = new MySecondClass(myHandler);
        // ....
    }
}


public class MySecondClass {
    private handler;
    public MySecondClass(Handler handler){
        this.handler = handler;
    }

    private void someMethodToCallActivity() {
        handler.sendEmptyMessage(0);
    }

}
于 2013-06-22T04:29:41.483 に答える