Bazı durumlarda seçilen menü itemi aracılığıyla Intent(Bu başlığı daha detaylı ele alacağız) kullanarak bir activity veya başka bir uygulama açmak isteyebilirsiniz. Belirli menü itemi için kullanmak istediğiniz intenti (niyet, maksat) biliyorsanız, uygun item seçildiğinde ilgili callback(geri dönüş) metoduyla startActivity() metoduyla intent başlatabilirsiniz.
Eğer intent işlemini başlatacak olan uygulamayı kullanıcının cihazındaki içeriğe göre belirlemezseniz, bu intenti çağıracak menü itemi eklemek fonksiyonel olmayan bir menü işlemiyle sonuçlanır. Çünkü, Inten bir Activity'i çözümlemek olmayabilir. Bu sorunu çözmek için, Android Intent'in işleme alabileceği aktiviteler bulduğunda dinamik olarak menü itemlerini ekleme imkânı tanır.
Menü itemi eklemek, kabul edilen bir intent için müsait olan aktiviteleri temel alır.
- Intent tanımını CATEGORY_ALTERNATIVE ve/veya CATEGORY_SELECTED_ALTERNATIVE şeklinde, diğer gereklilikleri de ekleyerek yapınız.
- Menu.addIntentOptions() metodunu çağırın. Android böylece uygulamaları tarayacak ve intenti işleyip menüye ekleyecektir.
Intent ile uyumlu bir uygulama yüklü bulunmadıysa eğer, herhangi bir menü itemi eklenmeyecektir.
ÖRNEK:
@Override
public boolean onCreateOptionsMenu(Menu menu){
super.onCreateOptionsMenu(menu);
// Create an Intent that describes the requirements to fulfill, to be included
// in our menu. The offering app must include a category value of Intent.CATEGORY_ALTERNATIVE.
Intent intent = new Intent(null, dataUri);
intent.addCategory(Intent.CATEGORY_ALTERNATIVE);
// Search and populate the menu with acceptable offering applications.
menu.addIntentOptions(
R.id.menu_archive, // Menu group to which new items will be added
0, // Unique item ID (none)
0, // Order for the items (none)
this.getComponentName(), // The current activity name
null, // Specific items to place first (none)
intent, // Intent created above that describes our requirements
0, // Additional flags to control items (none)
null); // Array of MenuItems that correlate to specific items (none)
return true;
}
Menü item başlığını ve menü item iconunu android:label değeri belirleyerek intent filtreleme yaptığımızda her tanımlı menü aktivitesi için tanımlı bir intent sağlanır. addIntentOptions() metodu, eklenmiş menü itemi sayısını döndürür.
NOT: addIntentOptions() metodunu çağırdığınızda, ilk argüman ile tanımlanmış gruplanmış tüm menü itemlerini Override eder.
Aktivitinizin diğer Menülere eklenmesine izin vermek
Aktivitinizin servislerini diğer uygulamalara da teklif edebilirsiniz. Böylece uygulamanız diğer uygulamaların menülerinde de yer alabilir. Bu düzenlemeleri AndroidManifest.xml de yapmanız gerekiyor.
Diğer uygulama menülerinde yer alabilmek için, bilindik şekilde bir intent filter yapmanız lazım ve bu tanımlamayı yaparken, CATEGORY_ALTERNATIVE ve/veya CATEGORY_SELECTED_ALTERNATIVE değerlerini intent filter kategorisi için tanımladığınızdan emin olmalısınız.
ÖRNEK:
<intent-filter label="@string/resize_image"> ... <category android:name="android.intent.category.ALTERNATIVE" /> <category android:name="android.intent.category.SELECTED_ALTERNATIVE" /> ...</intent-filter>
Intenler hakkında daha fazla bilgi için Buradan
Soru Ve Görüşleriniz için : AndroidVeJava android menü tanımlama , Intent , Intent Tabanlı aktiviti , menü , Menü Kavramı
Hiç yorum yok:
Yorum Gönder