34

Uygulamamda listeden her öğenin bir onay kutusu içerdiği bir ListFragment var. Kullanıcı bu onay kutularından birine tıkladığında, uygulama bir ActionMode içerik menüsü başlatır. Ancak uygulamanın başka bir bileşene tıklandığında ActionMode menüsünü kapatmasını istiyorum. Fragment#closeContextMenu()'u başarıyla denedim.Bir ActionMode menüsünü programlı olarak Honeycomb'da nasıl kapatılır?

Herhangi bir fikri nasıl başarabilirim? Oluşturduğunuz zaman

cevap

78

/ActionMode

mMode = startActionMode(....); 

tarafından Oluştur başlayan bu ActionMode bitirmek için sözdizimi

if (mMode != null) 
{ 
    mMode.finish(); 
} 
+0

ben bile Aklımın ucundan vermedi çok yorgunum düşünüyorum. Teşekkür ederim Vipul! – kaneda

+9

Bu soruna daha 'yerel' bir yaklaşım yok mu? Üye oluşturmadan bir şey mi? –

+0

Not: Beni yakalayan bir şey - mMode, etkinliğin bir sınıf alanı (adlandırma önerdiği gibi) olarak bildiremeyeceğiniz gibi VE aynı geri çağırmada kullanmanız gerekir. – Chris

0

Kotlin kodu

Kullanım ActionMode.Callback aşağıdaki kullanmak Dismiss için menü öğesine basıldıktan sonra

private val actionModeCallbacks = object : ActionMode.Callback { 
    override fun onCreateActionMode(mode: ActionMode, menu: Menu): Boolean { 
     mode.menuInflater.inflate(R.menu.menu_action_mode, menu) 
     return true 
    } 

    override fun onPrepareActionMode(mode: ActionMode, menu: Menu): Boolean { 
     return false 
    } 

    override fun onActionItemClicked(mode: ActionMode, item: MenuItem): Boolean { 
     when (item.itemId) { 
      R.id.menu_item -> { 
       mode.finish() // after click of menu item close action mode 
       return true 
      } 
     } 
     return false 
    } 

    override fun onDestroyActionMode(mode: ActionMode) { 


    } 
} 

startSupportActionMode

(activity as AppCompatActivity).startSupportActionMode(actionModeCallbacks) 
İlgili konular