12

ben main_menu.xml seviyesine yükselir bir menü:OnMenuItemSelected çağrılmaz

<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item 
     android:id="@+id/act_sync" 
     android:showAsAction="always" 
     android:actionLayout="@layout/sync_action" 
     android:icon="@android:drawable/ic_popup_sync" /> 
</menu> 

ve burada faaliyette kod şudur:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.main_menu, menu); 
    return true; 
} 
@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    MyMessageHandler.debug("menu item selected"); 
    switch(item.getItemId()){ 
    case R.id.act_sync: 
     sync(); 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 

Ama menü öğesine dokunduğumda onOptionsItemSelected çağrılmaz. Menü öğesinin actionLayout özniteliğini kaldırdığımda, iyi çalışıyor. Bunu nasıl düzeltebilirim?
Teşekkürler. Vipul Şah tarafından sağlanan cevaba ek olarak

cevap

26

sen (Sadece başvuru için) pasajı altındaki kullanmalıdır

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.main_menu, menu); 
     final Menu m = menu; 
     final MenuItem item = menu.findItem(R.id.ActionConnection); 
     item.getActionView().setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       sync(); 
      } 
     }); 
     return true; 
    } 
+3

Teşekkürler. Zaten 'item.setOnMenuItemClickListener' test etmiştim ama işe yaramadı. Önemli olan özel görünümümü almak ve clickListener'ı ayarlamaktı. Yardımınız için teşekkürler :) onClick(), @Override tarafından açıklanmamalıdır. Yanıtınızı çalışmakta olan sürüme göre düzenlerim ve biraz daha fazla sindiririm;) –

+0

teşekkürler Vipul :) – Ranjit

+0

Bu, benim için çalışan tek çözüm. Ben setOnMenuItemClickListener, onMenuItemSelected, vb denedim. – crubio

21

.

Eğer eylem düzeninde tüm öğelerin tıklanabilir seçeneği devre dışı emin olun: Hala cant almalarını onClick geri çağırmak böylece

android:clickable="false" 

Aksi halde tıklama çalabilir.

+1

Saat arama düşünüyorum. Teşekkürler! –

+0

Hayatımı kurtardım ...! Bu olmadan cevap işe yaramazdı ... Teşekkürler! –

+0

Çok teşekkürler. Sırt ağrısını öldürmekten kurtardım :) –

İlgili konular