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

  • Bryan Smith

    Bryan Smith

    12 Mart 2006
  • NikkoNantone

    NikkoNantone

    21 Kasım 2011
  • WK

    WK

    9 Ocak 2006