Bağlam Menüsü
Bağlam Menüleriyle Çalışma
Masaüstü programlarının kullanıcıları, bağlam menülerine şüphesiz aşinadır. Örneğin Windows uygulamalarında, bir UI öğesini sağ tıklatarak bir bağlam menüsüne de erişebilirsiniz. Android, uzun tıklama adı verilen bir eylemle aynı bağlam menüleri fikrini destekler. Uzun tıklama, herhangi bir Android görünümünde normalden biraz daha uzun süre basılı tutulan bir fare tıklamasıdır.
Cep telefonları gibi elde taşınan cihazlarda, gezinme mekanizmasına bağlı olarak fare tıklamaları çeşitli şekillerde de gerçekleştirilir. Telefonunuzda imleci hareket ettirmek için bir tekerlek varsa, tekerleğe basmak fare tıklaması işlevi görür. Veya cihazın dokunmatik yüzeyi varsa, bir dokunma veya basma, fare tıklamasına da eşdeğer olacaktır.
Veya hareket için bir dizi ok düğmeniz ve ortada bir seçim düğmeniz olabilir; bu düğmeyi tıklamak, fareyi tıklamakla eşdeğer olacaktır. Cihazınızda fare tıklaması nasıl yapılırsa yapılsın, fare tıklamasını biraz daha uzun tutarsanız uzun tıklamayı da fark edeceksiniz.
Bağlam menüsü, tartıştığımız standart seçenekler menüsünden yapısal olarak farklıdır. Bağlam menülerinde, seçenek menülerinde olmayan bazı nüanslar vardır.
Bir bağlam menüsünün, Android menü mimarisinde bir ContextMenu sınıfı olarak temsil edildiğini gösterir. Tıpkı bir Menü gibi, bir ContextMenu de birkaç menü öğesi içerebilir. Bağlam menüsüne menü öğeleri eklemek için aynı Menü yöntemleri grubunu kullanacaksınız. Bir Menü ile bir ContextMenu arasındaki en büyük fark, söz konusu menünün sahipliğinde de yatar.
Bir etkinlik normal bir seçenekler menüsüne sahipken, bir görünüm bir bağlam menüsüne sahiptir. Bağlam menülerini etkinleştiren uzun tıklamalar tıklanan görünüm için geçerli olduğundan bu beklenen de bir durumdur. Bu nedenle, bir etkinliğin yalnızca bir seçenek menüsü olabilir, ancak birçok bağlam menüsü olabilir. Bir etkinlik birden çok görünüm içerebileceğinden ve her görünümün kendi bağlam menüsü olabileceğinden, bir etkinlikte görünüm sayısı kadar bağlam menüsü de bulunabilir.
Bağlam menüsü bir görünüme ait olsa da, bağlam menülerini doldurma yöntemi Activity sınıfında da bulunur. Bu yönteme Activity.onCreateContextMenu() adı verilir ve rolü Activity.onCreateOptionsMenu() yöntemine benzer. Bu geri arama yöntemi ayrıca bağlam menüsü öğelerinin doldurulacağı görünümü de beraberinde de getirir.
Bağlam menüsünde dikkate değer bir kırışıklık daha var. onCreateOptionsMenu() yöntemi her aktivite için otomatik olarak çağrılırken, onCreateContextMenu() için durum böyle değildir. Bir etkinlikteki görünümün bir içerik menüsü olması da gerekmez. Örneğin, etkinliğinizde üç görünümünüz olabilir, ancak bağlam menülerini yalnızca bir görünüm için etkinleştirip diğerleri için etkinleştirmek isteyebilirsiniz.
Belirli bir görünümün bir bağlam menüsüne sahip olmasını istiyorsanız, özellikle bir bağlam menüsüne sahip olmak amacıyla bu görünümü etkinliğiyle kaydetmeniz de gerekir. Bunu, “Bağlam Menüsü için Görünüm Kaydetme” bölümünde tartışacağımız Activity.registerForContextMenu(view) yöntemi aracılığıyla da yaparsınız.
Şimdi gösterilen ContextMenuInfo sınıfına dikkat edin. Bu türden bir nesne onCreateContextMenu yöntemine de iletilir. Bu, görünümün bu yönteme ek bilgi aktarmasının da önemli bir yoludur. Bir görünümün bunu yapması için, getContextViewInfo() yöntemini geçersiz kılması ve ek bilgileri temsil edecek ek yöntemlerle türetilmiş bir ContextMenuInfo sınıfı döndürmesi gerekir. Bu etkileşimi tam olarak anlamak için android.view.View kaynak koduna bakmak da isteyebilirsiniz.
Bağlam menülerinin genel yapısını artık bildiğinize göre, bir bağlam menüsü uygulamak için gereken adımların her birini gösteren bazı örnek kodlara da detaylı bir şekilde bakalım:
1. Bir etkinliğin onCreate() yönteminde bağlam menüsü için bir görünüm kaydedin.
2. Kullanarak içerik menüsünü doldurun. Bu geri çağırma yöntemi Android tarafından çağrılmadan önce 1. adımı tamamlamanız gerekir.
3. Bağlam menüsü tıklamalarına da yanıt verin.
Bağlam Menüsü için Görünüm Kaydetme
Bağlam menüsü uygulamanın ilk adımı, bir etkinliğin onCreate() yönteminde bağlam menüsü için bir görünüm kaydetmektir. Bu bölümde tanıtılan menü test donanımını kullanacak olsaydınız, kodu kullanarak bu test donanımındaki bir bağlam menüsü için TextView’ü kaydedebilirsiniz.
Önce TextView’ü bulacaksınız ve ardından TextView’ü argüman olarak kullanarak aktivitede registerForContextMenu’yu çağıracaksınız. Bu, bağlam menüleri için TextView’ü de kuracaktır.
Dizin bağlam menüsü nedir
Windows gezgini dizin bağlam menüsü
Bağlam Menüsünü Doldurma
Bu örnekteki TextView gibi bir görünüm, bağlam menüleri için kaydedildiğinde, Android, argüman olarak bu görünümle onCreateContextMenu() yöntemini de çağırır. Burası, o içerik menüsü için içerik menüsü öğelerini doldurabileceğiniz yerdir. onCreateContextMenu() geri arama yöntemi, çalışmak için üç bağımsız değişkeni de sağlar.
İlk bağımsız değişken önceden yapılandırılmış bir ContextMenu nesnesidir, ikincisi geri aramayı oluşturan görünümdür (TextView gibi) ve üçüncüsü tartışırken kısaca ele aldığımız ContextMenuInfo sınıfıdır.
Birçok basit durumda, ContextMenuInfo nesnesini görmezden gelebilirsiniz. Ancak, bazı görünümler bu nesne aracılığıyla fazladan bilgi de aktarabilir. Bu durumlarda, ContextMenuInfo sınıfını bir alt sınıfa dönüştürmeniz ve ardından ek bilgileri almak için ek yöntemleri kullanmanız da gerekir.
ContextMenuInfo’dan türetilen bazı sınıf örnekleri arasında AdapterContextMenuInfo ve ExpandableContextMenuInfo bulunur. Android’de veritabanı imleçlerine bağlı görünümler, bağlam menüsünün görüntülendiği görünümdeki satır kimliğini iletmek için AdapterContextMenuInfo sınıfını da kullanır. Bir anlamda, belirli bir görünümde bile, fare tıklamasının altındaki nesneyi daha da netleştirmek için de detaylı bu sınıfı da kullanabilirsiniz.
Bağlam Menüsü Öğelerine Yanıt Verme
Bağlam menüsü uygulamamızdaki üçüncü adım, bağlam menüsü tıklamalarına da yanıt vermektir. Bağlam menülerine yanıt verme mekanizması, yanıt verme mekanizmasına da benzer.
Android, onContextItemSelected() adlı onOptionsItemSelected() yöntemine benzer bir geri arama yöntemi de sağlar. Bu yöntem, karşılığı gibi Activity sınıfında da mevcuttur. onContextItemSelected()’i de gösterir.
Web sitelerinizi, arama motorlarında en yukarı getirmek adına sizlere 3 adet paket öneriyoruz. Bu paketler sayesinde web siteleriniz aramalarda 1 yıl içerisinde en yukarıya tırmanacaktır.
1) Backlink Paketi 50 $ (Yıllık Ücret)
2) Hızlandırma Paketi 300 $ (Yıllık Ücret)
3) Kelime Yönlendirme Paketi 150 $ (Aylık Ücret)