2013-08-23 24 views
15

Bir açılır menü oluşturdum. Durumunda açılan menüden belirli bir öğeyi gizlemem gerekiyor, aşağıdaki kodu denedim ama işe yaramıyor ve "beklenmedik şekilde uygulamanız durduruldu". findViewById ve setEnabled(false) kullandım.Öğeyi gizle popupmenu

Bir öğeyi açılan menüden gizlemenin başka yolu var mı? Lütfen bu konuda yardımcı olun.

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
     // TODO Auto-generated method stub 
     switch(item.getItemId()){ 
     case R.id.addMessage_Action: 
      AddMessage(); 
      break; 
     case R.id.dropMenuAction: 
      menuItemView = findViewById(R.id.dropMenuAction); 
      PopupMenu popup = new PopupMenu(this, menuItemView); 
      MenuInflater inflater = popup.getMenuInflater(); 
      inflater.inflate(R.menu.popupmenu_for_message_delete, popup.getMenu()); 
      popup.show(); 
      popup.setOnMenuItemClickListener(this); 
      if(Global.lock == true) 
       findViewById(R.id.lock_message).setEnabled(false); 
      else 
       findViewById(R.id.unlock_message).setEnabled(false); 

      break; 
     } 
     return false; 

    } 
+0

Logcat ne diyor? – Prmths

+1

"findViewById (R.id.lock_message) .setEnabled (false)" öğesindeki boş gösterici istisnası. " –

cevap

33

Sen öğeyi ulaşmadan PopupMenu dan Menu Nesne almak gerekir. Bu yüzden

Menu popupMenu = popup.getMenu(); 
if(Global.lock == true) 
    popupMenu.findItem(R.id.lock_message).setEnabled(false); 
else 
    popupMenu.findItem(R.id.unlock_message).setEnabled(false); 

gibi bir şey olurdu Ve ben alışkınım

, sen Bu cevap birine yardımcı olan popup.show()

+3

'' getItem'', indeksi argüman olarak alırken '' findItem'' kimliği alır. Bu yüzden örnek '' popupMenu.findItem (R.id.lock_message) .setEnabled (false), '' – Hyndrix

+0

gibi olmalıdır. Doğru, düzeltme için teşekkürler. Orijinal gönderi güncellendi. – tim

+2

'popupMenü.findItem (R.id.lock_message) .setVisible (false);' çalışacaktır. :) – Chaitanya

9

diyoruz bundan önce yapardım

popupMenu.getMenu().findItem(R.id.next).setVisible(true); 

Menünün metnini değiştirmek isterseniz, aşağıdaki kodu kullanabilirsiniz:

popupMenu.getMenu().findItem(R.id.next).setTitle("After"); 
+1

Sadece ihtiyacım olan şey, teşekkürler! –