Fragment를 사용하는 목적은 분할된 화면을 독립적으로 사용하기 위해서이다.(Activity를 본떠 만든 것)
Fragment를 만들 때도 액티비티를 만들 때의 과정과 비슷하게 진행한다. 즉 액티비티라는 것이 하나의 XML 레이아웃과 하나의 자바 소스 파일로 동작하는 것처럼 Fragment도 하나의 XML레이아웃과 하나의 자바 소스 파일로 동작하도록 만들게 된다.
먼저 프래그먼트를 위한 XML레이아웃을 만든다.
프래그먼트도 부분화면이므로 화면에 뷰들을 배치할 때는 XML레이아웃으로 만들기 때문.
/res/layout폴더 안에 XML레이아웃 파일인 fragment_main.xml을 만들고 화면을 정의한다.
그 다음에는 프래그먼트를 위한 자바 소스를 만든다.
프래그먼트는 Fragment 클래스를 상속하여 만들 수 있다.
프래그먼트 클래스에 있는 주요 메소드들
public final Activity getActivity()
//이 프래그먼트를 포함하는 액티비티를 리턴
public final fragmentManager getFragmentManager()
//이 프래그먼트를 포함하는 액티비티에서 프래그먼트 객체들과 의사소통하는 프래그먼트 매니저를 리턴
public final fragment getParentFragment()
//이 프래그먼트를 포함하는 부모가 프래그먼트 일 경우 리턴함. 액티비티면 null을 리턴
publit final int getId()
//이 프래그먼트의 ID를 리턴.
프래그먼트를 위한 클래스까지 만들었다면 XML 레이아웃 파일의 내용을 자바 소스 파일과 매칭하는 과정이 필요하다.
프래그먼트에는 setContentView() 메소드가 없기 때문에 인플레이션을 위한 별도의 코드를 사용해야 한다.
XML 레이아웃 파일의 내용을 인플레이션 한 후 클래스에서 사용하도록 하는 코느는 onCreatView() 메소드 안에 들어간다.
onCreateView() 메소드는 콜백 메소드로 인플레이션이 필요한 시점에 자동으로 호출된다. 따라서 이 메소드 안에서 인플레이션을 위한 inflate() 메소드를 호출하면 되고 인플레이션 과정이 끝나면 프래그먼트가 하나의 뷰처럼 동작할 수 있는 상태가 된다.
프래그먼트는 버튼이나 레이아웃처럼 화면의 일정 공간을 할당받을 수 있다.
따라서 새로 만든 프래그먼트를 메인 액티비티에 추가하는 방법은 뷰와 마찬가지로 XML 레이아웃에 추가하거나 또는 소스 코드에서 new 연산자를 이용해 객체를 만든 후 프래그먼트 매니저로 추가할 수 있다.
메인 화면을 위해 만들어진 activity_main.xml 파일에 직접 <fragment> 태그를 이용해 프래그먼트를 추가할 수 도있고, 새로 정의한 프래그먼트 클래스의 인스턴스 객체를 new 연산자를 이용해 만들어준 후 FragmentManager 객체의 add() 메소드를 이용해 액티비티에 추가할 수 도있다.
FragmentManager 클래스에 들어있는 주요 메소드들
public abstract FragmentTransaction beginTransaction()
//프래그먼트를 변경하기 위한 트랜젝션을 시작
public abstract Fragment findFragmentByID(int id)
//ID를 이용해 프래그먼트 객체를 찾음
public abstract Fragment findFragmentByTag(String tag)
//태그 정보를 사용해 프래그먼트 객체를 찾음
public abstract boolean executePendingTransactions()
//트랜젝션은 commit() 메소드를 호출하면 실행되지만 비동기 방식으로 실행되므로 즉시 실행하고 싶다면
//이 메소드를 추가로 호출해야 함
FragmentManager객체는 프래그먼트를 액티비티에 추가하거나 다른 프래그먼트로 바꾸거나 삭제 할 때 주로 사용할 수 있으며 getFragmentManager() 메소드를 호출하면 참조 할 수 있다.
프래그먼트 클래스는 보통 Fragment 클래스를 상속하도록 만들지만 프래그먼트 중에는 미리 정의된 몇가지 프래그먼트 클래스들이 있어 그 클래스를 그대로 사용하는 경우도 있다.
그 중에서 DialogFragment는 액티비티 수명주기에 의해 관리되는 대화상자를 보여줄 수 있도록 한다. 이 프래그먼트는 액티비티의 기본 대화상자 대신 사용할 수있다.
ListFragment는 데이터를 리스트뷰 형태로 보여줄 수 있도록하며 ListActivity 클래스와 비슷하다.
'App > Android' 카테고리의 다른 글
[Android] TabLayout (0) | 2019.09.24 |
---|---|
[Android] RecyclerView (0) | 2019.08.27 |
[Android] SharedPreference (0) | 2019.08.27 |
[Android Studio] Google 로그인 인증 (3) (0) | 2019.08.18 |
[Android Studio] Google 로그인 인증(2) (0) | 2019.08.18 |