2013-06-21 31 views
1

我一直在这个程序工作一段时间了。我被困在如何处理我的多个按钮issue.I有三个按钮,需要启动不同的线程,但我已经看过谷歌的线程和多线程的东西,我无法找到我正在寻找的答案。 从我的理解公共无效run()只能在一个类的线程中调用一次?我将如何创建一个类中的代码不同的多个线程?如何在android中为多个线程使用多个按钮?

的我所看到的

例子,这将是我的问题的最佳解决方案是:行线的

@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(); 
+0

一类应该封装一个独特的功能。所以你必须为不同的线程编写不同的功能类。 – Kishore

+0

好吧,我可以创建DrawingUtils类的内部类并从我的mainactivity类运行线程?如果是的话,当按下按钮时我怎么会调用线程呢? –

回答

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()

0

ü不能更新UI通常在其上推出新的线程..请阅读更多关于开发之前UI ..... this may help you

设置为文本视图测试代码中的

info.post(new Runnable() { 
@Override 
    public void run() { 
     info.setText("Enter X,Y,Z for Point 1"); 
    } 
}); 
+0

感谢我了解处理程序的信息,但没有详细阅读它们。 –