Ne kadar çok parça bir aktivitede onContextİtemSelected işlemek için
Benim uygulama "" parçaları 1.6 Android kullanıcıları için bile. kullanımı faydaları sağlamak için Android v4 için Uyumluluk Kitaplıkları kullanmak için adapte olmaya çalışıyorum şu anda
Şimdiye kadar bu büyük bir sorun olmadan mümkün oldu ama bir bağlam menüsü uygulanması daha zor görünüyor
- Uygulamanın ana faaliyet bu uzananFragmentActivity sınıf.
- Parçaları bir temel Fragment sınıfını genişleten bir sınıf.
- Fragment sınıfı arıyor () registerForContextMenuonun içinde() onCreateViewve yöntemleri geçersiz kılar yöntemi () onCreateContextMenuve() onContextİtemSelected.
İçin() onCreateContextMenubu oldukça iyi çalışır. Bağlam menüsü Seçilen öğeyi dayalı bir kaynak dosyadan şişirilmiş ve biraz modifiye parça ListFragment değilse bile bir liste görünümü dayalı...).
Sorun bağlam menüsü girişi seçili olduğunda ortaya çıkar. () onContextİtemSelectedşu anda varolan tüm parçaları ilk başlangıç için denir ekledi.
Benim durumumda parçaları bir klasör yapısı içeriğini göstermek için kullanılır. Alt parçası bağlam menüsü açılır ve bir menü öğesi seçildiğinde() onContextİtemSelectedilk üst düzey (siyah/şu anda görünür gelemeyeceklerini bağlı olarak) olarak adlandırılır.
Şimdi, son bölümü etiketi tutan aktivite düzeyi üzerine bir alan tarafından geçici bir çözüm amacını kullanıyorum() onCreateContextMenu. Bu şekilde "return super.çağırabilirim onContextİtemSelected(kalem)" başlamıştır() onContextİtemSelectedsaklı etiketi getTag aynı değildir. Ama bu yaklaşım bana biraz kirli görünüyor.
Neden onContextİtemSelected() tüm parçaları denir? ve aradığı tek bir kişi değil() onCreateContextMenu? Bu işi neden en zarif nedir?
İleri teşekkürler.
CEVAP
Ben sadece benzer bir sorunu ele çünkü geçici bir çözüm bulundu rağmen bir cevap göndeririz. Belirli bir parça için bağlam menüsü açıldığı zaman, her bir menü öğesi parçası için eşsiz bir groupİd atayın. Sonra 'onContextİtemSelected.' groupİd için test Örneğin:
public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {
menu.add(UNIQUE_FRAGMENT_GROUP_ID, MENU_OPTION_1, 0, R.string.src1);
menu.add(UNIQUE_FRAGMENT_GROUP_ID, MENU_OPTION_2, 0, R.string.src2);
}
public boolean onContextItemSelected(MenuItem item) {
//only this fragment's context menus have group ID of -1
if (item.getGroupId() == UNIQUE_FRAGMENT_GROUP_ID) {
switch(item.getItemId()) {
case MENU_OPTION_1: doSomething(); break;
case MENU_OPTION_2: doSomethingElse(); break;
}
}
Bu şekilde, tüm parçaların hala 'onContextİtemSelected, ama sadece doğru, böylece aktivite düzeyinde kod yazmak gerek kalmadan yanıt verir. çağırır alırsınız Bu tekniğin değiştirilmiş bir sürümünü kullanıyor 'menü.olmasan bile işe yarayabilir sanırım(...) Ekle'
Ne kadar çok uzun dizin adları işlemek...
Ne kadar Dinlendirici bir API çok-çok ...
Nasıl etkinlik/parça duraklatıldı İşle...
Nasıl aktivitede Geri düğmesini işleme...
Hareket Gıt ile yeni bir şube için en ...