我正在嘗試在我的課堂上實現onTouch,用於遠程控制mindstorms機器人。我還有很多工作要做,但現在我正在嘗試整理使用onClick的直接控制。 5個按鈕,5個實例,如下面的代碼,它調用包含機器人移動指令的5種方法之一。OnClick風格的OnClick
編輯: 活動有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
我想要做以上的事情,但是用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;
}
});
工作就好了。多謝你們。
你是什麼意思,它只適用於1按鈕?你有沒有嘗試設置多個聽衆? – keyser 2012-03-26 20:47:03
onTouch偵聽器已設置爲btn1。我有一個問題將公共布爾ontouch方法放入一個可以調用的方法,因爲它會與onClick – TroothHertz 2012-03-26 20:50:14
我仍然不完全瞭解問題,謝謝。 – keyser 2012-03-26 21:01:11