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는 IS 조각의 안드로이드 SDK의 기본 버전의 클래스. Android 3 (API 11)에서 도입되었습니다.

앱에서 프래그먼트를 사용하도록하고 API 11 이전의 기기를 타겟팅하려면을 사용해야합니다 android.support.v4.app.Fragment. 그러나 API 11 이상을 실행하는 기기 만 타겟팅하는 경우을 사용할 수 있습니다 android.app.Fragment.

편집 : android.app.Fragment 이제 OS 포함 이 더 이상 사용되지 않으며 (API 레벨 28 현재) 지원 라이브러리 구현을 사용하는 모든 사람으로 이동해야합니다.


4
"지원 라이브러리없이 FragmentStatePagerAdapter 사용"도 참조하십시오 : stackoverflow.com/questions/18512294/…
CJBS

: 당신이) (onAttach 오버라이드 (override)하는 경우, 그것은 android.app.Fragment으로 어떤 상황에서 호출되는 것을 방지하기 위해이 스레드를 참조하십시오 stackoverflow.com/questions/32083053/...
홍콩

3
androidx를 사용할 것입니다 : androidx.fragment.app.Fragment
Abhijit Kurane

56

2018 년 기준 :

에서 android.app.Fragment 문서 :

이 클래스는 API 레벨 28에서 더 이상 사용되지 않습니다. 모든 장치에서 일관된 동작 및 수명주기에 액세스
하려면 지원 라이브러리 Fragment를 사용하십시오 .

따라서 이제 지원 단편 ( android.support.v4.app.Fragment)을 기본 단편 ( android.app.Fragment) 대신 어디에서나 사용해야합니다 .


@Artyom은 안드로이드 개발에 대한 멍청한 말로 android.app.Fragment클래스가 더 이상 사용되지 않을 때 API 레벨 28이 대체 가능한 급진적 대체 접근법을 가질 것으로 기대했습니다 . 정방향 접근 android.support.v4.app.Fragment방식이 있습니까? 아니면 역방향 접근 방식이 올바른 방식입니까?
ergohack

1
@ergohack 그런 식으로보십시오 : 자바 코드의 경우 바이트 코드를 장치의 런타임 또는 응용 프로그램의 jar 파일에 포함시킬 수 있습니다. 지원 라이브러리 코드는 항아리에 넣고 런타임 제공 코드와 동일한 기능을 제공하므로 대상 전화의 노후화 및 유지 관리되지 않은 코드 대신 현대적이고 유지 관리되는 지원 라이브러리를 사용하지 않을 이유가 없습니다.
피에르

12

나는 사용한다 android.support.v4.app.Fragment 독점적으로 합니다.

필자가 작성하는 모든 앱은 Android 2.3으로 바로 지원해야하며 이것이 가장 쉬운 방법입니다.

11 이상을 지원하는 경우을 선택하십시오 android.app.Fragment.


18
이 경우 지원 라이브러리에 존재하지만 특정 API 레벨 이후의 기본 기능에만 존재하는 많은 기능이 빠져 있습니다. 예를 들어 getChildFragmentManager ()는 레벨 17까지 사용할 수 없습니다. 제 충고는 지원 조각 만 사용하고 기본 조각은 존재하지 않는 척하는 것입니다.
Johan

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 이전 디바이스로 확장하기 위해 해당 라이브러리를 포함해야합니다. 그것은 유용한 라이브러리이며 ActionBarSherlock을 살펴 보는 것이 좋습니다. ActionBarSherlock은 작업 표시 줄을 API v11 이전 장치로 확장합니다.


-2

애플리케이션이 API 11 이상을 대상으로하는 경우 android.app.Fragment를 사용하면 APK 크기가 줄어 듭니다. 그렇지 않으면 android.support.v4.app.Fragment를 사용하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.