Ü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
BundleAndroid 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
BundleActivity-BirFragmentgömülü düzeni; örneğin sık kullandığım bu zaman ben birActivitygörüntülerFragment"tam ekran" ve ihtiyacı KİMLİK (veyaContentProviderURI) ne ekran/yapın. Bazen, örneğin ben ölmeden önce bileBundleBir (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,Bundleyani bir oFragmentyakı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
Bundlesıkı bir döngü, yani argüman veri bir kezonCreate(),onViewCreate()vb. o kadar da kötü değil.Tür güvenliği,
BundlegetXXXX()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.

Bir şekilde Ruby yöntem bağımsız değiş...
Eclipse eÅŸleÅŸtirme deÄŸiÅŸkenleri vurgul...
Nasıl Python ortam değişkenleri kümesi...
Neden Scala derleyicisi varsayılan bağ...
Nasıl (sorgu dizesi) Node.js üzerinde ...