Я пытаюсь определить UI-элемент управления, который запустил MotionEvent в Android. У меня есть один doubleTapDetector
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
doubleTapDetector = new GestureDetector(this, new DoubleTapDetector());
}
объявлено как
private class DoubleTapDetector extends GestureDetector.SimpleOnGestureListener {
@Override
public boolean onDoubleTap(MotionEvent e) {
String uiControlName = obtainUiControlName(e);
// Do something depends on uiControlName
return true;
}
private String obtainUiControlName(MotionEvent e) {
int deviceId = e.getDeviceId();
switch (deviceId) {
case R.id.button1: return "Button1";
case R.id.button2: return "Button2";
}
return null;
}
}
размещено на обеих кнопках
Button button1 = (Button) findViewById(R.id.button1);
outcomeButton.setOnTouchListener(new OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event) {
doubleTapDetector.onTouchEvent(event);
return true;
}
});
Button button2 = (Button) findViewById(R.id.button2);
outcomeButton.setOnTouchListener(new OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event) {
doubleTapDetector.onTouchEvent(event);
return true;
}
});
Проблема в том, что deviceId всегда равен 0 , и я не могу определить, какая кнопка вызывает событие двойного щелчка. Есть ли способ сделать это без реализации двух разных doubleTapDetector для каждой кнопки?