2012-10-03 23 views
6

Her biri kendi ActionMode'una gereksinim duyan bir görünümde birkaç widget'ım var. Kullanıcı, eylem çubuğunun dışına çıktığında ActionMode'un otomatik olarak kapanmadığını görüyorum. Böylelikle, kullanıcının bir kontrol için bir ActionMode başlatması, ardından bir başka kontrol (bir kutuda longclick) üzerine dokunması ve birincinin üstüne ikinci bir ActionBar atması mümkün olmaktadır. Bu programlama mantığına neden olur.actionmode'nin zaten mevcut olup olmadığını nasıl algılayabilir

Geçerli ActionMode'u etkinlik düzeyi üye değişkeni ile takip edebilir ve yeni bir tane gerekiyorsa mevcut olanı iptal edebilirim. Nasılsa, bu benim kodlarımı okumak ve sürdürmek için dağınık hale getiriyor. Dahası, kullanıcı eylem çubuğunun dışındaki herhangi birşeye dokunduğunda onu hemen reddetmeyi tercih ederim.

Bunu yapmak için iyi bir öneriniz var mı?

cevap

6

Bu sorunun çözümü için bir süre önce aradım ve bildiğim kadarıyla, global bir değişkende geçerli işlem modu durumunu kaydetmeden izleyemediniz. Ancak, uygun bir ada sahip bir değişkenin kodunuzu dağınık hale getireceğini sanmıyorum.

+0

Tamam, ama bir yana, kullanıcı alt sınıfları görmediğiniz bir EditText'i tıklattı diyelim. Uygun olmayan işlem çubuğunu nasıl reddediyorsunuz? –

+0

Tamam, eğer doğru anladıysam ... Bunu şöyle yaptım: uygulanan global değişken 'ActionMode mMode;', bir 'onCreateActionMode (...)' yönteminde geçerli eylem moduyla doldurdu ve sonra sadece 'mMode’ı çağır .finish() ' – user1049280

+0

Geçerli eylem modundan çıkmam gerektiğinde, bunu anlıyorum. Peki bitirmeyi ne zaman arayacağınızı nereden biliyorsunuz()? Yani, kullanıcının tıklayabileceği birçok yer var; Her nesneyi alt sınıflara ayırıyor ve MotionEvent.ACTION_DOWN için kontrol ediyor ve ardından bitirmeyi() mi çağırıyorsunuz? Bu çok hataya eğilimli olurdu, bu kod parçaları her yerde biberiye olacaktı. –

İlgili konular