Estoy buscando capturar las coordenadas del evento táctil de los usuarios (para esto implementé el método onTouch
), pero también quiero mostrar un menú contextual cuando el usuario toca la pantalla.usando onTouch y onCreateContextMenu al mismo tiempo
Cuando se utilizan los métodos onTouch
y onCreateContextMenu
, cada evento táctil se envía al método onTouch
. El método onCreateContextMenu
nunca se llama. Supongo que esto es esperado. Luego traté de mostrar manualmente el menú contextual llamando al openContextMenu(v)
en el método onTouch
, esto funciona, pero el menú no desaparece de la pantalla después de la llamada onContextItemSelected(MenuItem item)
. Entonces, ¿cómo puedo hacer que esto funcione?
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.record_match);
myCourtView = new MyImageView(getApplicationContext());
ll = (LinearLayout)findViewById(R.id.linearLayout);
ll.addView(myCourtView, new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
registerForContextMenu(myCourtView);
myCourtView.requestFocus();
myCourtView.setOnTouchListener(this);
}// End OnCreate
// Implement the OnClickListener callback
public boolean onTouch(View v, MotionEvent event) {
//do something when user interacts with the court view
myCourtView.processEvent(event);
openContextMenu(v);
myCourtView.invalidate();
return true;
}//End OnClickListener
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.shot_entry_menu, menu);
}//End onCreateContextMenu
@Override
public boolean onContextItemSelected(MenuItem item) {
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
switch (item.getItemId()) {
case R.id.player_1:
//do something
return true;
case R.id.player_2:
//do something else
return true;
}
return true;
}//End onContextItemSelected