Ü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
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 ederFragment
(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
-BirFragment
gömülü düzeni; örneğin sık kullandığım bu zaman ben birActivity
görüntülerFragment
"tam ekran" ve ihtiyacı KİMLİK (veyaContentProvider
URI) ne ekran/yapın. Bazen, örneğin ben ölmeden önce bileBundle
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 oFragment
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 kezonCreate()
,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.
Neden parçalara varsayılan olmayan kur...
Nasıl ve kabuk boolean değişkenleri bi...
Nasıl PHP için JavaScript değişkenleri...
Nasıl bir modülü başlatılamıyor'r...
Nasıl ve C Ortam değişkenleri almak ay...