2011-05-03 24 views
10

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 

cevap

0

Eğer onTouch yanlış dönmelidir: dinleyici yanlış aksi olayı, tükettiği

ise doğru. Benim için

0

bu çözüm çalışması:

myCourtView.setOnTouchListener(new OnTouchListener() 
    {public boolean onTouch(View v, MotionEvent ev) 
     {}); 

istirahat aynı

0

gerçek dönüşten sonra kamu boolean onTouch bu koymayı deneyin olduğu; registerForContextMenu (this.getListView());

İlgili konular