Я пытаюсь внедрить onTouch в своем классе, который используется для удаленного управления роботом мозговых штурмов.У меня еще много работы, но сейчас я пытаюсь привести в порядок прямой элемент управления, который использует onClick.5 кнопок, 5 экземпляров, как в приведенном ниже коде, который вызывает один из 5 методов, содержащих инструкции для робота по перемещению.
РЕДАКТИРОВАТЬ: деятельность имеет 5 кнопок, каждая делает что-то.Исходный класс использовал onClickListener, как показано ниже, где они будут создаваться в методе OnCreate, вызывая метод void, который имеет фактический код для выполнения.
Вместо этого я хотел использовать onTouch, поскольку он делает удаленный ...лучше.Но у меня возникла проблема при попытке заставить его работать более чем с одной кнопкой.
btn1 = (Button) findViewById(R.id.btn1);// instantiates a button called
// btn1 one from the xml
btn1.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
driveFore();//move forward
}// calls the method
});// end of method
Это оригинальный onClick, который вызывает метод вне onCreate.
private void driveFore() {
// TODO Auto-generated method stub
Motor.A.forward();
Motor.B.forward();
}//Move forward
Iхотел бы сделать выше, но с помощью onTouch.Таким образом, после нажатия кнопки двигатели продолжают работать до тех пор, пока не будет нажата другая кнопка, поэтому я подумал, что onTouch будет лучше, поскольку он будет двигаться, пока нажата кнопка.
И этовариант onTouch
btn1 = (Button) findViewById(R.id.btn1);
btn1.setOnTouchListener(this);
, который прослушивает
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
Motor.A.forward();
Motor.B.forward();
break;
case MotionEvent.ACTION_UP:{
Motor.A.flt();
Motor.B.flt();
}
break;
}
return true;
}
Приведенный выше код работает, но только для 1 кнопки.Как мне применить вышеупомянутое для целых 5 кнопок.
РЕДАКТИРОВАТЬ: Как предложено, я попытался использовать эти два метода:
btn1 = (Button) findViewById(R.id.btn1);
btn1.setOnTouchListener(new OnTouchListener(){
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
Motor.A.forward();
Motor.B.forward();
break;
case MotionEvent.ACTION_UP:
Motor.A.flt();
Motor.B.flt();
}
return true;
}
});
btn2 = (Button) findViewById(R.id.btn2);
btn2.setOnTouchListener(new OnTouchListener(){
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
Motor.A.forward();
Motor.B.forward();
break;
case MotionEvent.ACTION_UP:
Motor.A.flt();
Motor.B.flt();
}
return true;
}
});
Работает просто отлично.Спасибо, ребята.