Sorum arasındaki temel farklar nelerdir dışında bariz miras farklılıklardan olduğunu Fragment
ve FragmentActivity
? Her sınıf hangi senaryolara en uygun? Bu sınıfların her ikisinin de neden var olduğunu anlamaya çalışıyorum ...
Sorum arasındaki temel farklar nelerdir dışında bariz miras farklılıklardan olduğunu Fragment
ve FragmentActivity
? Her sınıf hangi senaryolara en uygun? Bu sınıfların her ikisinin de neden var olduğunu anlamaya çalışıyorum ...
Yanıtlar:
A , aşağıdakilere sahip olan Fragment
bir bölümüdür Activity
:
Activity
.A Fragment
her zaman bir Activity
.
Fragments
HoneyComb (3.0) öncesi API'nın bir parçası değildir. Fragments
HoneyComb'tan önceki bir platform sürümünü hedefleyen bir uygulamada kullanmak istiyorsanız , projenize Destek Paketi eklemeniz ve FragmentActivity
cihazınızı tutmak için öğesini kullanmanız gerekir Fragments
. FragmentActivity
Sınıf ile ilgili bir API vardır Fragments
, oysa Activity
sınıf, petek yapılı öncesinde değildir.
Proje petek veya yalnızca daha yeni hedefliyorsa, kullanmak gerekir Activity
değil FragmentActivity
Bekletmenizi için Fragments
.
Bazı detaylar:
Kullanım android.app.Fragment
ile Activity
. Kullanım android.support.v4.app.Fragment
ile FragmentActivity
. Destek paketini eklemeyin Fragment
bir karşı Activity
bir durum atılmasına neden olacağından.
Dikkat edilmesi gereken bir şey: FragmentManager
ve LoaderManager
FragmentActivity için ayrı destek sürümlerine sahip olmak:
Eğer bir kullanıyorsanız Fragment
bir in Activity
(petek ve üstü), çağrı
getFragmentManager()
almak android.app.FragmentManager
getLoaderManager()
almak android.app.LoaderManager
Eğer bir kullanıyorsanız Fragment
bir de FragmentActivity
(ön Honeycomb) çağrıyı:
getSupportFragmentManager()
almak için android.support.v4.app.FragmentManager
.getSupportLoaderManager()
almak android.support.v4.app.LoaderManager
böylece, yok do
//don't do this
myFragmentActivity.getLoaderManager();
//instead do this:
myFragmentActivity.getSupportLoaderManager();
veya
//don't do this:
android.app.FragmentManager fm = myFragmentActivity.getSupportFragmentManager();
//instead do this:
android.support.v4.app.FragmentManager fm = myFragmentActivity.getSupportFragmentManager()
Bir parçanın içine gömülmek Activity
zorunda olsa da, Activity
mizanpajın bir parçası olması gerekmediğini bilmek de yararlıdır . Kendi arayüzü olmadan, etkinlik için görünmez bir işçi olarak kullanılabilir.
FragmentActivity, parça desteğine sahip klasik etkinliğimizdir, başka bir şey değildir. Bu nedenle, Faaliyete bir Parça ekleneceği zaman FragmentActivity gereklidir.
Well Fragment, Aktivitenin temel davranışlarını kopyalayan iyi bir bileşendir, yine de Aktivite gibi bağımsız bir uygulama bileşeni değildir ve çalışması için Aktiviteye eklenmesi gerekir.
Bakın burada daha fazla ayrıntı için
FragmentActivity'yi, Fragment'ları destekleyebilecek normal bir Activity sınıfı olarak düşünün. Petek yapmadan önce, bir aktivite sınıfı Fragmanları doğrudan destekleyemezdi, bu yüzden Fragment kullanan aktivitelerde bu gereklidir.
Hedef dağıtımınız Petek ve ötesi ise, bunun yerine Etkinlik dışı bırakabilirsiniz.
Ayrıca bir parça 'alt faaliyet' olarak kabul edilmelidir. Etkinlik olmadan var olamaz. Bir parçayı her zaman bir alt aktivite olarak düşünün ve iyi olmalısınız. Dolayısıyla etkinlik, ebeveyn ve çocuğun türü sembolik bir ilişki olacaktır.
a FragmentActivity, Fragment içeren geçici bir etkinliktir. Bu birkaç kelimede size android 3.0 (HoneyComb) ile android ekibinin android sdk'ye eklediği ana önemli değişikliklerden birini açıkladım.
Bu yeni konsept ile kod ve yerleşim parçalarınız daha esnek ve bakımı kolay hale gelir. Google'da arama yaparsanız birçok örnek vardır.