android.app.Fragmentとandroid.support.v4.app.Fragmentの違い


175

との違いは何ですか?android.app.Fragmentまたandroid.support.v4.app.Fragment、それぞれを使用する必要がある状況は何ですか?

回答:


288

android.support.v4.app.FragmentAndroidサポートライブラリのFragmentクラスです。これは、古いバージョンのAndroidでAndroidの新しい機能の一部を使用できる互換性パッケージです。

android.app.Fragmentあるフラグメントのクラスは、Android SDKのネイティブバージョンで。Android 3(API 11)で導入されました。

アプリでフラグメントを使用し、API 11より前のデバイスをターゲットにする場合は、を使用する必要がありますandroid.support.v4.app.Fragment。ただし、API 11以降を実行しているデバイスのみをターゲットにする場合は、を使用できますandroid.app.Fragment

編集:OSを含むものandroid.app.Fragment が非推奨になり(APIレベル28以降)、誰もがサポートライブラリの実装の使用に移行する必要があります。


4
また、「サポートライブラリなしFragmentStatePagerAdapterの使用」を参照してください:stackoverflow.com/questions/18512294/...
CJBS

onAttach()をオーバーライドする場合は、このスレッドを参照して、android.app.Fragment:stackoverflow.com/questions/32083053/…の
Hong

3
Androidxを使用します:androidx.fragment.app.Fragment
Abhijit

56

2018年現在:

android.app.Fragment ドキュメントから:

このクラスはAPIレベル28で廃止されました。すべてのデバイスで一貫した動作とライフサイクルへのアクセスのために
サポートライブラリFragmentを使用してください。

そのため、サポートフラグメント(android.support.v4.app.Fragment)をネイティブフラグメント(android.app.Fragment)の代わりにどこでも使用する必要があります。


@Artyomは、Android開発の初心者として、android.app.Fragmentクラスが非推奨になったとき、そのAPIレベル28が代替の、おそらく根本的な置き換えアプローチを持つことを期待していました。前方アプローチはありandroid.support.v4.app.Fragmentますか、またはこれは後方互換性のある適切なアプローチですか?
ergohack 2018

1
@ergohackそのとおりです。Javaコードの場合、デバイスのランタイム内またはアプリケーションのjarファイル内にバイトコードを含めることができます。サポートライブラリコードがjarに入れられ、ランタイム提供のコードと同じ機能を提供するため、ターゲットの電話のエージングおよびメンテナンスされていないコードの代わりに、最新の維持されているサポートライブラリを使用しない理由はありません。
ピエール

12

android.support.v4.app.Fragment専ら使用しています。

私が作成するすべてのアプリは、Android 2.3に直接対応する必要があり、これが最も簡単な方法です。

11以上をサポートしている場合は、に固執してくださいandroid.app.Fragment


18
その場合、サポートライブラリには存在するが、特定のAPIレベルの後のネイティブな機能にのみ存在する多くの機能を見逃しています。たとえばgetChildFragmentManager()はレベル17まで使用できません。私のアドバイスは、サポートフラグメントのみを使用し、ネイティブフラグメントが存在しないふりをすることです。
ヨハン

4

アプリケーションがAPI 11以上を対象としている場合、使用できandroid.app.Fragment、APKファイルは小さくなります。

それ以外の場合は、android.support.v4.app.Fragment古いAndroid APIバージョン(Android 3.x)をサポートするために、ライブラリをプロジェクトに追加します。


2

android.support.v4.app.Fragment 古いAPIバージョンの後方互換性を取得するために使用できるライブラリです。

フラグメントはAPIレベル11で(他の機能とともに)追加されました。それらの機能をAPI 11以前のデバイスに拡張するには、そのライブラリを含める必要があります。これは便利なライブラリです。アクションバーをAPI v11以前のデバイスに拡張するActionBarSherlockを確認することをお勧めします。


-2

アプリケーションがAPI 11以上のレベルをターゲットにしている場合、android.app.Fragmentを使用すると、APKサイズが小さくなります。それ以外の場合は、android.support.v4.app.Fragmentを使用します

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.