OnCreate (), onCreateView () ve onActivityCreated () 'in parçalardaki farkı ve kullanımları


329

Arasındaki farklar nelerdir onCreate(), onCreateView()ve onActivityCreated()onlar her biri için kullanılacak parçalar halinde ve ne?



@BradLarson Bunun neden kapatıldığını anlamıyorum. Bu nispeten popüler bir soru olduğunu kanıtladı ve yorumunuzda belirtilen bağlantıdan farklı. Bu soru, üç farklı yöntem ile bunların birbirleriyle nasıl karşılaştırılacağı arasındaki farkı soruyor, ancak yorumunuzda bağladığınız soru bu yöntemlerden sadece ikisinden bahsediyor.
Farbod Salamat-Zadeh

@BradLarson Fuarı yeterince ve iyi tespit edildi. Şimdi bir anlayışım olmasına rağmen, üç yöntemi daha iyi karşılaştıran ve ek ayrıntılar için bağlantılara referans veren bir cevap yazamadım mı?
Farbod Salamat-Zadeh

2
@ FarbodSalamat-Zadeh - Elbette. Daha iyi bir cevap verebileceğinizi düşünüyorsanız soruyu yeniden açtım. Yapabilseydim, cevapsız oturmak istemedim.
Brad Larson

Yanıtlar:


395

onCreate ():

onCreate()Bir yöntem Fragmentolup sonra adlandırılan Activity'ınonAttachFragment() ama bundan önce Fragment' s onCreateView().
Bu yöntemde, değişkenler atayabilir, Intentekstralar alabilir ve Görünüm hiyerarşisini içermeyen başka bir şey (yani grafiksel olmayan başlatmalar) yapabilirsiniz. Bunun nedeni, Activity's onCreate()bitmediğinde bu yöntemin çağrılmasıdır ve bu nedenle Görünüm hiyerarşisine buradan erişmeye çalışmak çökmeye neden olabilir.

onCreateView ():

Sonra onCreate()(denir Fragment), Fragment'in onCreateView()olarak adlandırılır. ViewDeğişkenlerinizi atayabilir ve herhangi bir grafik başlatma yapabilirsiniz . ViewBu yöntemden bir döndürmeniz beklenir ve bu ana kullanıcı arayüzü görünümüdür, ancak Fragmentherhangi bir düzen veya grafik kullanmazsanız geri dönebilirsiniz null(geçersiz kılmazsanız varsayılan olarak gerçekleşir).

) (OnActivityCreated:

Adından da anlaşılacağı gibi, buna Activity's onCreate()tamamlandıktan sonra denir . Sonra denir onCreateView()ve çoğunlukla son başlatmalar için kullanılır (örneğin, UI öğelerini değiştirmek için).


Özetle ...
... hepsi çağrılır, Fragmentama farklı zamanlarda çağrılır. Olmayan bir grafik alıştırmalarını yapmak için, ilk olarak adlandırılır. Ardından, kullanmak istediğiniz değişkenleri atayabilir ve bildirebilirsiniz . Daha sonra, her şey tamamlandığında yapmak istediğiniz son başlatma işlemlerini yapmak için kullanın .
onCreate()ViewonCreateView()onActivityCreated()


Resmi Android belgelerini görüntülemek istiyorsanız, burada bulabilirsiniz:
- - -onCreate()
onCreateView()
onActivityCreated()

Ayrıca Stack Overflow'da biraz farklı, ancak daha az gelişmiş sorular / cevaplar var:


6
Ekran döndürüldüğünde tekrar çağrılmayacak şekilde onCreate () 'de grafiksel olmayan başlatmalar uygulayacağımı düşündüm. Ben fragment.setRetainInstance (true) çağırmak zorunda olduğu ortaya çıkıyor aksi takdirde ekran döndürüldüğünde hem onCreate () hem de onCreateView () tekrar çağrılır.
Lanet Sebze

OnCreateView () öğesinde, görünüm hiyerarşisine erişmek güvenli midir?
Cody

@ Cody inanıyorum - görünüm hiyerarşisine erişmek tam amacıdır onCreateView.
Farbod Salamat-Zadeh

1
Ancak, etkinliğin onCreate () yöntemi onActivityCreated ()? Bu, görünüm hiyerarşisine erişmek için onCreateView'de kilitlenme şansı var mı? OnCreateView () / on onActivityCreated ()
Cody

1
Dikkat edilmesi gereken bir şey (en azından AppCompatActivity ile), etkinlik yeniden oluşturulduğunda (örneğin, simge durumuna küçültülüp öldürüldükten sonra), onCreate () ve super.onCreate () etkinlikleri tamamlanmadan önce onCreate () parçalarının çağrılmasıdır. Hançer gibi bir şey kullanıyorsanız ve enjekte edilen üst aktivitede bir şeye erişmeniz gerekiyorsa bu bir sorun olabilir. Bunun bir çözümü her zaman onCreate () olarak adlandırılan onActivityCreated () kodunu koymaktır.
Nicholas

144

21
Kabul. Komik Sans böyle şeyler için gereklidir
Kartik Chugh

1
Aynı diyagramda ilk kez 3 farklı yazı tipi görüyorum ve hayatım şimdi bir şekilde tamamlandı.
Gil Sand

Bir parça tam olarak ne zaman yeniden başlayabilir?
Saurabh

1
Nasıl oluyor da parça öldükten sonra yeniden yaratılmıyor? AFAIK, sadece görev durumu bir paket olarak korunur ve yeniden oluşturulan uygulama yeniden ön plana çıkarılır.
stdout

6

onActivityCreated () - Kullanımdan kaldırıldı

onActivityCreated()artık Parça Sürümü 1.3.0-alpha02 olarak kullanımdan kaldırıldı

OnActivityCreated () yöntemi artık kullanımdan kaldırıldı. Parçanın görünümüne dokunan kod onViewCreated () 'da (onActivityCreated ()' den hemen önce çağrılır) yapılmalıdır ve diğer başlatma kodu onCreate () 'de olmalıdır. Özellikle etkinliğin onCreate () işlemi tamamlandığında bir geri çağrı almak için, bir LifeCycleObserver öğesinin onAttach () içindeki etkinliğin Yaşam Döngüsü'ne kaydedilmesi ve onCreate () geri çağrısı alındıktan sonra kaldırılması gerekir.

Ayrıntılı bilgi burada bulunabilir

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.