Kullanıcıların dokunma olayının koordinatlarını yakalamak için arıyorum (Bunun için onTouch
yöntemini uyguladım), ancak kullanıcı ekrana dokunduğunda bir bağlam menüsü de görüntülemek istiyorum.aynı anda
Her ikisi de onTouch
ve onCreateContextMenu
yöntemleri kullanıldığında, her dokunma olayı onTouch
yöntemine gönderilir. onCreateContextMenu
yöntemi hiçbir zaman çağrılmaz. Sanırım bu bekleniyor. Daha sonra, yönteminde openContextMenu(v)
numaralı telefonu arayarak içerik menüsünü el ile görüntülemeye çalıştım, ancak bu, onContextItemSelected(MenuItem item)
aramasından sonra menüden ekrandan kaybolmuyor. Peki bu işi nasıl yapabilirim?
@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