SORU
14 Mart 2011, PAZARTESİ


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
18 Kasım 2011, Cuma


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'

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • andyabc45

    andyabc45

    1 Mayıs 2011
  • HowToBasic

    HowToBasic

    8 Aralık 2011
  • Mindy

    Mindy

    20 NİSAN 2006