2013-06-21 4 views
1

Я уже давно работаю над этой программой. Я зациклился на том, как обрабатывать проблемы с несколькими кнопками. У меня есть три кнопки, которые нужно запускать разными потоками, но я просмотрел материал в Google для потоковой передачи и многопоточности, и я не смог найти ответ, который я искал. Из моего понимания public void 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

A класс должен инкапсулировать уникальную функциональность. Поэтому вам нужно писать отдельные классы для разных потоков, которые отличаются своей функциональностью. – 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

U Cant обновление UI обычно на новом потоке, который вы запускаете .. пожалуйста, подробнее о пользовательском интерфейсе до развития ..... this may help you

установить тест для просмотра текста в коде

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

Спасибо за информацию, которую я знал о обработчиках, но не много читал о них. –