Üye değişkenleri vs Parçalara setArguments | Netgez.com
SORU
13 Temmuz 2011, ÇARŞAMBA


Üye değişkenleri vs Parçalara setArguments

Şeyler beklediğiniz farklı bir çift yaptıkları Parçaları için Android başvuru farkettim ki (özellikle DialogFragment):

1). Bir kurucu yerine public static foo newInstance() yöntemi kullanın.
2). Değerleri setArguments yerine üye değişkenleri kullanarak onCreateDialog geçer.

Bu newİnstance yansıma kullanırken tercih görünüyor okudum. Ancak gerçekten bir bohça ile parametreler geçiyorlar anlamıyorum. Üye değişkenleri kullanarak güvenli bir harita almak için bir dize kullanarak) olacak olsa olurdu ve bir yükü daha az olurdu.

Herhangi bir düşünce?

CEVAP
23 AĞUSTOS 2011, Salı


Ayrıca bu tökezledi ve argümanlar kullanmanın bazı avantajları Bundle örnek üzerinde alanları: buldum

  • EÄŸer bir Bundle Android sistemi bilir ve yaratır ve yok eder Fragment (kullanma zorunlu parametresiz/varsayılan yapıcı ve normal yaÅŸam döngüsü yöntemleri), ve sadece geçiÅŸte bağımsız paket yine. Bu ÅŸekilde herhangi bir argüman düşük bir hafıza çılgınlığı ya da nihai yönelim deÄŸiÅŸiklikleri (bu genellikle daha az-döner öykünücüsü kalkınma sonra gerçek bir cihaz ilk Dağıt beni vurur) öldürmeyi kaybol.

  • Sadece pas ekstralar Bundle Activity-Bir Fragment gömülü düzeni; örneÄŸin sık kullandığım bu zaman ben bir Activity görüntüler Fragment "tam ekran" ve ihtiyacı KİMLİK (veya ContentProvider URI) ne ekran/yapın. Bazen, örneÄŸin ben ölmeden önce bile Bundle Bir (veya kopyalamak) için daha fazla ÅŸeyler ekleyin

    @Override
    protected void onCreate(final Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
    
      if (savedInstanceState == null) { // not a re-creation
        final Bundle args = new Bundle(getIntent().getExtras());
        args.putInt(CoverImageFragment.BACKGROUND_RESOURCE, android.R.color.black);
        final Fragment fragment = CoverImageFragment.newInstance(args);
        getSupportFragmentManager()
          .beginTransaction()
          .add(android.R.id.content, fragment)
          .commit();
      }
    }
    
  • Activity, Bundle yani bir o Fragment yakın olan yolu tutar "giriÅŸ parametreleri, istisna yok.

Bu olumsuzlukları gibi söyledin:

  • Bence yükü az, çünkü büyük olasılıkla olmayacak sorgulama Bundle sıkı bir döngü, yani argüman veri bir kez onCreate(), onViewCreate() vb. o kadar da kötü deÄŸil.

  • Tür güvenliÄŸi, Bundle getXXXX() tüm farklı yöntemler, ve eÄŸer bir ÅŸey opsiyonel/: yoksa, varsayılan deÄŸer saÄŸlamak için aşırı bile)

İçin newInstance() yöntemleri, bence onlar gibi kolay bir şekilde saklanması new setArguments() aramalar için Fragment; bazen bulunur bir ek MyFragment newInstance(String singleIdOfWhatToDisplay) oluşturur hem de Bundle Fragment tek seferde ve döndürür bir hazır-to-go Fragment örneği.

Bunu PaylaÅŸ:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Defence Videos

    Defence Vide

    13 Mayıs 2013
  • metal571

    metal571

    30 Mayıs 2006
  • Rozetked | Обзоры

    Rozetked | Ð

    5 AÄžUSTOS 2011