[android] Fragment와 FragmentActivity의 차이점은 무엇입니까?

내 질문의 주요 차이점 무엇 떨어져 명백한 상속의 차이로부터 Fragment그리고는 FragmentActivity? 각 수업이 어떤 시나리오에 가장 적합합니까? 이 두 클래스가 왜 존재하는지 이해하려고 노력 중입니다 …



답변

A Fragment는의 섹션으로 다음과 Activity같습니다.

  • 자체 수명주기
  • 자체 입력 이벤트를 수신
  • Activity실행 하는 동안 추가하거나 제거 할 수 있습니다 .

A는 Fragment항상에 포함되어야합니다 Activity.

FragmentsHoneyComb (3.0) 이전의 API의 일부가 아닙니다. FragmentsHoneyComb 이전의 플랫폼 버전을 대상으로하는 앱에서 사용 하려면 지원 패키지 를 프로젝트 에 추가하고를 사용하여을 FragmentActivity보유해야합니다 Fragments. FragmentActivity클래스 처리를위한 API를 가지고 Fragments반면, Activity클래스, 벌집 이전에,하지 않습니다.

프로젝트가 HoneyComb 이상을 대상으로하는 경우을 (를) 사용 Activity하지 않아야 FragmentActivity합니다 Fragments.

일부 세부 사항 :

android.app.Fragment와 함께 사용하십시오 Activity. android.support.v4.app.Fragment와 함께 사용하십시오 FragmentActivity. 지원 패키지 Fragment를 추가하지 마십시오 Activity. 예외가 발생합니다.

물건은 조심하려면 다음 FragmentManagerLoaderManagerFragmentActivity에 대한 별도의 지원 버전이 있습니다 :

(HoneyComb 이상) Fragment에서를 사용하는 경우Activity

  • getFragmentManager() 얻을 android.app.FragmentManager
  • getLoaderManager() 얻을 android.app.LoaderManager

pre-HoneyComb Fragment에서를 사용하는 경우 다음으로 FragmentActivity전화하십시오.

  • getSupportFragmentManager()얻을 android.support.v4.app.FragmentManager.
  • getSupportLoaderManager() 얻을 android.support.v4.app.LoaderManager

그렇게 하지 않는다

//don't do this
myFragmentActivity.getLoaderManager(); 
//instead do this:
myFragmentActivity.getSupportLoaderManager();

또는

//don't do this:
android.app.FragmentManager fm = myFragmentActivity.getSupportFragmentManager();
//instead do this:
android.support.v4.app.FragmentManager fm = myFragmentActivity.getSupportFragmentManager()

조각을 포함 Activity해야하지만 Activity레이아웃의 일부일 필요는 없습니다 . 자체 UI가없는 활동의 보이지 않는 작업자로 사용할 수 있습니다.


답변

FragmentActivity는 프래그먼트를 지원하는 클래식 액티비티입니다. 따라서 FragmentActivity는 Fragment가 Activity에 첨부 될 때 필요합니다.

Well Fragment는 Activity의 기본 동작을 복사하는 좋은 구성 요소이며 여전히 Activity와 같은 독립형 응용 프로그램 구성 요소는 아니며 작동하려면 Activity에 연결해야합니다.

여기에 자세한 내용은


답변

FragmentActivity를 Fragments를 지원할 수있는 일반 Activity 클래스로 생각하십시오. 벌집 이전에는 활동 클래스가 단편을 직접 지원할 수 없었으므로 단편을 사용하는 활동에 필요합니다.

대상 배포가 Honeycomb 이상이면 활동을 대신 확장 할 수 있습니다.

또한 프래그먼트는 ‘서브 액티비티’로 간주됩니다. 활동이 없으면 존재할 수 없습니다. 항상 조각을 하위 활동으로 생각하면 좋을 것입니다. 따라서 활동은 부모이고 조각은 자식과 같은 상징적 관계입니다.


답변

FragmentActivity는 Fragment를 포함하는 임시 활동입니다. 이 몇 마디로 안드로이드 3.0 (HoneyComb)을 통해 안드로이드 팀이 안드로이드 SDK에 삽입 한 주요 중요한 변경 중 하나를 설명했습니다.

이러한 새로운 개념으로 코드와 레이아웃이보다 유연하고 유지 관리 가능해집니다. Google에서 검색하면 많은 예가 있습니다.


답변