Alternatif Menüler
Alternatif Menüler
Şimdiye kadar menüler, alt menüler ve bağlam menüleri oluşturmayı ve bunlarla çalışmayı öğrendiniz. Android, alternatif menü öğelerinin menülerin, alt menülerin ve bağlam menülerinin parçası olmasına izin veren alternatif menüler adı verilen yeni bir kavram sunar. Alternatif menüler, Android’deki birden fazla uygulamanın birbirini kullanmasına izin verir. Bu alternatif menüler, Android uygulama içi iletişim veya kullanım çerçevesinin parçasıdır.
Özellikle alternatif menüler, bir uygulamanın başka bir uygulamadan menüler içermesine izin verir. Alternatif menüler seçildiğinde, hedef uygulama veya aktivite, o aktivitenin ihtiyaç duyduğu verilere bir URL ile başlatılacaktır. Çağrılan etkinlik daha sonra iletilen niyetten gelen veri URL’sini kullanır. Alternatif menüleri iyi anlamak için öncelikle içerik sağlayıcılarını, içerik URI’lerini, içerik MIME türlerini ve amaçlarını anlamalısınız.
Buradaki genel fikir şudur: bazı verileri görüntülemek için bir ekran yazdığınızı hayal edin. Büyük olasılıkla, bu ekran bir etkinlik olacaktır. Bu aktivitede, verileri çeşitli şekillerde manipüle etmenize veya verilerle çalışmanıza izin veren bir seçenekler menüsüne sahip olacaksınız.
Ayrıca bir an için, bir URI ve karşılık gelen bir MIME türü tarafından tanımlanan bir belge veya notla çalıştığınızı varsayalım. Bir programcı olarak yapmak istediğiniz şey, cihazın eninde sonunda bu verilerle nasıl çalışılacağını bilen veya bu verileri görüntüleyen daha fazla program içereceğini tahmin etmektir. Bu yeni program grubuna, bu etkinlik için oluşturduğunuz menünün bir parçası olarak menü öğelerini görüntüleme fırsatı vermek istiyorsunuz.
Bir menüye alternatif menü öğeleri eklemek için onCreateOptionsMenu yönteminde menüyü ayarlarken şu adımları izleyin:
1. Veri URI’si şu anda göstermekte olduğunuz veri URI’sine ayarlanmış bir amaç oluşturun.
2. Amacın kategorisini CATEGORY_ALTERNATIVE olarak ayarlayın.
3. Bu tür URI tarafından desteklenen veriler üzerinde işlemlere izin veren etkinlikleri arayın.
4. Menüye menü öğeleri olarak bu etkinlikleri çağırabilen niyetler ekleyin.
Bu adımlar bize Android uygulamalarının doğası hakkında çok şey anlatıyor, bu yüzden her birini inceleyeceğiz. Artık bildiğimiz gibi, alternatif menü öğelerinin menüye eklenmesi onCreateOptionsMenu yönteminde gerçekleşir.
Şimdi bu işlevi hangi kodun oluşturduğunu bulalım. Öncelikle bu etkinlikte üzerinde çalışıyor olabileceğimiz veriler için URI’yi bilmemiz gerekir.
Bu, Activity sınıfının, bu etkinliğin kendisi için çağrıldığı veri URI’sini döndüren getIntent() adlı bir yöntemi olduğu için işe yarar.
Bu çağrılan aktivite, ana menü tarafından çağrılan ana aktivite olabilir; bu durumda, bir amacı olmayabilir ve getIntent() yöntemi null değerini döndürür. Kodunuzda, bu duruma karşı korunmanız gerekecektir.
Şimdi hedefimiz, başka hangi programların bu tür verilerle nasıl çalışılacağını bildiğini bulmak. Bu aramayı argüman olarak bir niyet kullanarak yapıyoruz.
Amacı oluşturduktan sonra, ilgilendiğimiz eylemler kategorisini de ekleyeceğiz. Spesifik olarak, yalnızca alternatif bir menünün parçası olarak çağrılabilecek etkinliklerle ilgileniyoruz. Artık Menü nesnesine eşleşen etkinlikleri aramasını ve bunları menü seçenekleri olarak eklemesini söylemeye hazırız.
Bu kodu satır satır incelemeden önce, eşleştirme etkinlikleri terimiyle ne demek istediğimizi açıklayacağız. Eşleşen etkinlik, kendisine verilen bir URI’yi işleyebilen bir etkinliktir. Etkinlikler genellikle URI’leri, eylemleri ve kategorileri kullanarak bu bilgileri bildirim dosyalarına kaydeder. Android, bu öznitelikler verilen eşleşen etkinlikleri aramak için bir Intent nesnesi kullanmanıza izin veren bir mekanizma sağlar.
Mozilla Firefox
Brave
Opera
Firefox indir
Maxthon
Brave tarayıcı
AVG Secure Browser
Opera indir
Şimdi yakından bakalım. Menu sınıfındaki addIntentOptions yöntemi, bir amacın URI’si ve kategori öznitelikleriyle eşleşen etkinliklere bakmaktan sorumludur. Daha sonra yöntem, bu etkinlikleri uygun menü öğesi kimlikleri ve sıralama düzeni kimlikleri ile sağ grup altındaki menüye ekler. İlk üç argüman, yöntemin sorumluluğunun bu yönüyle ilgilidir.
Listelemede yeni menü öğelerinin ekleneceği grup olarak Menu.CATEGORY_ALTERNATIVE ile başlıyoruz. Aynı sabiti, menü öğesi kimlikleri ve sıralama düzeni kimlikleri için başlangıç noktası olarak da kullanırız.
Bir sonraki bağımsız değişken, bu menünün parçası olduğu etkinliğin tam nitelikli bileşen adına işaret eder. Kod, getComponentName() adlı bir yardımcı yöntem kullanır; sınıf ve paket adlarından bir bileşen adı almayı okuyucuya bir alıştırma olarak bırakacağız.
Bu bileşen adı gereklidir, çünkü yeni bir menü öğesi eklendiğinde, bu menü öğesinin hedef etkinliği çağırması gerekecektir. Bunu yapmak için, sistemin hedef etkinliği başlatan kaynak etkinliğe ihtiyacı vardır. Sonraki bağımsız değişken, döndürülen amaçlar üzerinde filtre olarak kullanmak istediğiniz bir dizi amaçtır.
Bir sonraki bağımsız değişken, az önce oluşturduğumuz ölçütün amacına işaret ediyor. Bu, peşinden gittiğimiz arama kriterleridir. Bundan sonraki bağımsız değişken, bu gruptaki mevcut menü öğeleri kümesine ekleme yapılıp yapılmayacağını veya bunların değiştirilip değiştirilmeyeceğini belirtmek için Menu.FLAG_APPEND_TO_GROUP gibi bir bayraktır. Varsayılan değer, menü grubundaki menü öğelerinin değiştirilmesi gerektiğini belirten 0’dır.
Listelemedeki son bağımsız değişken, eklenen menü öğeleri dizisidir. Bu eklenmiş menü öğesi referanslarını, ekledikten sonra bir şekilde değiştirmek isterseniz kullanabilirsiniz.
Bütün bunlar iyi ve güzel. Ancak birkaç soru cevapsız kalıyor. Örneğin eklenen menü öğelerinin adları ne olacak? Android belgeleri bu konuda oldukça sessiz. Bu nedenle, bu işlevin gerçekte perde arkasında ne yaptığını görmek için kaynak kodunu araştırdık.
Görünüşe göre Menu sınıfı sadece bir arayüz, dolayısıyla onun için herhangi bir uygulama kaynak kodu göremiyoruz. (Android’in kaynak koduna nasıl ulaşacağınızı görmek gerekir) Menu arabirimini uygulayan sınıfın adı MenuBuilder’dır. Liste, MenuBuilder sınıfından ilgili bir yöntemin (addIntentOptions) kaynak kodunu gösterir. (Referansınız için kodu sağlıyoruz; satır satır açıklamayacağız.)
Listelemede kalın harflerle vurgulanan satıra dikkat edin; kodun bu kısmı bir menü öğesi oluşturur. Kod, bir menü başlığı bulma işini ResolveInfo sınıfına devreder. ResolveInfo sınıfının kaynak kodu bize, bu amacı bildiren niyet filtresinin kendisiyle ilişkilendirilmiş bir başlığa sahip olması gerektiğini 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)