Android Studio) Fragment란?

chaeyoung·2023년 1월 18일
0

Android Studio

목록 보기
9/13
post-thumbnail

Fragment 이해

  • Fragment: 액티비티처럼 이용할 수 있는 뷰
    • 액티비티 클래스 복잡을 피하려면 액티비티 내 작성된 코드 일부분을 개발자 클래스로 추상화해서 개발(view class)
      • 한계: 뷰 클래스 생명주기는 액티비티와 달라 추상화 불가능
    • 액티비티 내용 분리해 개발할 수 있는 클래스 = Fragment

Fragment 작성법

  • xml 파일(ex. fragment_one) -> 기존 액티비티 레이아웃 구성과 같음

  • Fragment 클래스

    pubic class oneFrag extends Fragment{
       pubic View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
        	return inflater.inflate(R.layout.fragment_one,container, false);
    }  }
    • 간단히 화면만 출력: onCreateView()함수 재정의
    • 액티비티 화면에 띄울 때 레이아웃 xml에서 Fragment는 <fragment>태그로 등록
  • 동적으로 액티비티 화면에 Fragment 출력하는 경우: FragmentManager, FragmentTransaction

    • activity layout xml 파일

      <LinearLayout
       	android:id="@+id/main_container"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:orientation="vertical">
      </LinearLayout>
      
    • activity 코드 내 프래그먼트 함수 사용

        oneFrag = new OneFrag();
         FragmentTransaction ft = manager.beginTransaction();
         ft.add(R.id.main_container, oneFrag);
         ft.commit();
      • add()를 사용해 화면에 추가할 수 있다 = add(Fragment가 추가될 위치)

      • FragmentTransaction에서 제공하는 함수

        함수
        add(int containerViewId, Fragment fragm)새로운 프래그먼트를 화면에 추가(id영역)
        add(int containerViewId, Fragment frag, String tag)id 영역에 프래그 추가하며 추가한 프래그의 구분자를 태그명으로 설정
        replace(int containerViewId, Fragment frag)id영역에 추가된 프래그먼트 대체
        replace(int containerViewId, Fragment frag,Stirng tag)id 영역에 추가된 프래그를 대체하면서 tag 이름설정
        remove(Fragment frag)추가된 프래그삭제
        commit()화면에 적용

Fragment 생명주기

  • Fragment 생명주기: 액티비티 생명주기를 그대로 이용하는 뷰
    • BackStack: Fragment가 화면에 안보이는 순간 제거하지 않고 저장해놓는 기능(다시이용)
      • 스마트폰 버튼에 의해 BackStack에 저장된 fragment가 다시 나오게 된다.
      • BackStack 이용 여부에 따라 생명주기가 다름
        • 사용하려면: ft.addToBackStack(null) 함수 이용
        • BackStack 여부:

0개의 댓글