Sorum arasındaki temel farklar nelerdir dışında bariz miras farklılıklardan olduğunu Fragmentve 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 Fragmentve 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 Fragmentbir bölümüdür Activity:
Activity.A Fragmenther zaman bir Activity.
FragmentsHoneyComb (3.0) öncesi API'nın bir parçası değildir. FragmentsHoneyComb'tan önceki bir platform sürümünü hedefleyen bir uygulamada kullanmak istiyorsanız , projenize Destek Paketi eklemeniz ve FragmentActivitycihazınızı tutmak için öğesini kullanmanız gerekir Fragments. FragmentActivitySınıf ile ilgili bir API vardır Fragments, oysa Activitysınıf, petek yapılı öncesinde değildir.
Proje petek veya yalnızca daha yeni hedefliyorsa, kullanmak gerekir Activitydeğil FragmentActivityBekletmenizi için Fragments.
Bazı detaylar:
Kullanım android.app.Fragmentile Activity. Kullanım android.support.v4.app.Fragmentile FragmentActivity. Destek paketini eklemeyin Fragmentbir karşı Activitybir durum atılmasına neden olacağından.
Dikkat edilmesi gereken bir şey: FragmentManagerve LoaderManagerFragmentActivity için ayrı destek sürümlerine sahip olmak:
Eğer bir kullanıyorsanız Fragmentbir in Activity(petek ve üstü), çağrı
getFragmentManager() almak android.app.FragmentManagergetLoaderManager() almak android.app.LoaderManagerEğer bir kullanıyorsanız Fragmentbir de FragmentActivity(ön Honeycomb) çağrıyı:
getSupportFragmentManager()almak için android.support.v4.app.FragmentManager.getSupportLoaderManager() almak android.support.v4.app.LoaderManagerbö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 Activityzorunda olsa da, Activitymizanpajı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.