Android.app.Fragment ve android.support.v4.app.Fragment arasındaki fark


175

Arasındaki fark nedir android.app.Fragmentve android.support.v4.app.Fragmentve her kullanılması gerektiğini hangi koşullar nelerdir?

Yanıtlar:


288

android.support.v4.app.Fragmentolan Fragment Android'in eski sürümlerinde Android'in en yeni özelliklerden bazılarını kullanmak sağlayan bir uyumluluk paketi olan android destek kütüphane, sınıf.

android.app.Fragmentolan Fragment Android SDK yerli versiyonunda sınıfı. Android 3'te (API 11) tanıtıldı.

Uygulamanızın parçaları kullanmasını istiyorsanız ve API 11'den önce cihazları hedeflemek istiyorsanız, kullanmanız gerekir android.support.v4.app.Fragment. Ancak, yalnızca API 11 veya sonraki sürümlerini çalıştıran cihazları hedefliyorsanız kullanabilirsiniz android.app.Fragment.

Düzenleme: İşletim sisteminin içerdiği android.app.Fragment artık kullanımdan kaldırılmıştır (API düzey 28'den itibaren) ve herkes destek kitaplığı uygulamalarına geçmelidir.


4
Ayrıca bkz. "Destek kitaplığı OLMADAN FragmentStatePagerAdapter Kullanma": stackoverflow.com/questions/18512294/…
CJBS

: Siz) (onAttach geçersiz ise, android.app.Fragment ile bazı koşullar altında çağrılan kaçınmak için bu konu bakın stackoverflow.com/questions/32083053/...
Hong

3
Androidx kullanacak: androidx.fragment.app.Fragment
Abhijit Kurane

56

2018 itibariyle:

Gönderen android.app.Fragment belgeler :

Bu sınıf API 28 düzeyinde kullanımdan kaldırıldı. Tüm aygıtlarda tutarlı davranış ve Yaşam Döngüsüne erişim için
Destek Kitaplığı'nı kullanın Fragment.

Bu nedenle, destek fragmanları android.support.v4.app.Fragment( android.app.Fragment) artık yerel fragmanlar ( ) yerine her yerde kullanılmalıdır .


@Artyom, android geliştirme için bir noob olarak, android.app.Fragmentsınıf kullanımdan kaldırıldığında, bu API seviye 28'in alternatif, muhtemelen radikal bir değiştirme yaklaşımına sahip olmasını bekledim . İleriye dönük bir yaklaşım var mı veya bu geriye android.support.v4.app.Fragmentdoğru uygun yaklaşımla uyumlu mu?
ergohack

1
@ergohack Bu şekilde görün: java kodu için bayt kodunu cihazın çalışma zamanına veya uygulamanın jar dosyasına ekleyebilirsiniz. Destek kitaplığı kodu kavanozunuza yerleştirilecek ve çalışma zamanı tarafından sağlanan kodla aynı özelliği sağlayacaktır, bu nedenle hedef telefonunuzun yaşlanma ve korunmayan kodu yerine modern ve bakımı yapılmış destek kitaplığını kullanmamanız için hiçbir neden yoktur.
Pierre

12

Sadece kullanıyorum android.support.v4.app.Fragment.

Yazdığım tüm uygulamaların Android 2.3'e geri destek vermesi gerekiyor ve bunu yapmanın en kolay yolu bu.

Eğer 11+ destekliyorsanız, o zaman sadık kalın android.app.Fragment.


18
Bu durumda, destek kitaplığında bulunan ancak belirli bir API düzeyinden sonra yalnızca yerel özellikte bulunan birçok özelliği kaçırırsınız. Örneğin getChildFragmentManager () 17. seviyeye kadar mevcut değildir. Tavsiyem sadece destek Parçalarını kullanmak ve yerel olanın yokmuş gibi davranmaktır.
Johan

4

Uygulamanız API 11 veya üstü için hedeflenmişse, kullanabilirsiniz android.app.Fragmentve APK dosyanız daha küçük olacaktır.

Aksi takdirde, android.support.v4.app.Fragmenteski android API sürümlerini (Android 3.x) desteklemek için kütüphanenizi projenize ekleyin .


2

android.support.v4.app.Fragment eski API sürümü için geriye dönük uyumluluk elde etmek için kullanabileceğiniz bir kütüphanedir.

Parçalar API seviyesi 11'e eklenmiştir (diğer özelliklerle birlikte), bu işlevi API 11 öncesi cihazlara genişletmek için bu kütüphaneyi dahil etmelisiniz. Bu kullanışlı bir kütüphane ve eylem çubuğunu API öncesi v11 aygıtlarına genişleten ActionBarSherlock'a göz atmanızı öneririm.


-2

Uygulamanız API 11 veya üstü seviyeyi hedefliyorsa, android.app.Fragment kullanabilirsiniz ve APK boyutunu azaltacaktır. Aksi takdirde android.support.v4.app.Fragment kullanın

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.