Fragment를 사용하기 위해서 개념을 정리해 보았다.
Fragment를 사용하는 건 사용자에겐 편리할지 모르나 개발자에겐 좀 복잡한 작업이다.
특히 Fragment와 ViewPager와 ActionBar와
DrawerLayout이 함께 엮이어 돌아갈 경우는 더더욱 머리가 복잡해 진다. 따라서 전체적인 개념이 정리가 필요하다.
특히 Fragment와 ViewPager와 ActionBar와
DrawerLayout이 함께 엮이어 돌아갈 경우는 더더욱 머리가 복잡해 진다. 따라서 전체적인 개념이 정리가 필요하다.
본 포스트는 Fragment를 기본적으로 사용해 본 경험이 있는 분들이라야 의미가 있으리라고 생각된다.
아래는 Fragment의 동작 메커니즘을 정리해 본 내용이다.
-. Activity가 Fragment를 담기 위해서는 일반 Activity로는 안되고
android.support.v4.app.FragmentActivity를 extends해야한다.
android.support.v4.app.FragmentActivity를 extends해야한다.
public class ExViewPagerActivity extends FragmentActivity { ... }
-. 여기서 Fragment간의 이동을 부드럽게 되도록 해 주는 용도로 ViewPager를 채용하면
된다. 즉 FragmentActivity에 ViewPager를 담으면 된다.
된다. 즉 FragmentActivity에 ViewPager를 담으면 된다.
ViewPager는 Layout manager that allows the user to flip left and right through
pages of data의 역할을 한다.
pages of data의 역할을 한다.
-. ViewPager에 담을 데이터와 ViewPager에 보여줄 View를 생성하기 위해서는 adapter
클래스가 있어야 한다. 마치 ListView에 표시할 데이터와 표현하는 방식(View)를 제공하는
역할의 adapter를 필요로 하는 것과 같다.
클래스가 있어야 한다. 마치 ListView에 표시할 데이터와 표현하는 방식(View)를 제공하는
역할의 adapter를 필요로 하는 것과 같다.
-. ViewPager가 사용할 adapter 클래스는 두 가지 종류가 있는데
FragmentPagerAdapter와
FragmentStatePagerAdapter가 있다.
FragmentPagerAdapter와
FragmentStatePagerAdapter가 있다.
-. FragmentPagerAdapter는 표시할 page의 수가 고정되어 있고 몇개 되지 않을 때
사용하는 용도이고(이 adapter를 사용하면 모든 page를 메모리에 다 로드해 두고서
page 이동을 하는 방식이다)
사용하는 용도이고(이 adapter를 사용하면 모든 page를 메모리에 다 로드해 두고서
page 이동을 하는 방식이다)
-. FragmentStatePagerAdapter는 표시할 page의 수가 고정되어 있지않고 또 많을
경우에 사용하는 adapter이다. 이 경우의 page 이동은 매번 현재 page를 destroy한 후
새 page를 생성하는 식이다.
경우에 사용하는 adapter이다. 이 경우의 page 이동은 매번 현재 page를 destroy한 후
새 page를 생성하는 식이다.
-. 이 두 adapter 클래스를 상속받은 클래스는
public int getCount()과
public Fragment getItem(int position)를 필요에 맞게 재정의해서 사용하면된다.
public int getCount()과
public Fragment getItem(int position)를 필요에 맞게 재정의해서 사용하면된다.
-. ViewPager를 setAdapter() 할때 getCount()와 getItem()이 차례로 호출된다.
public void setAdapter (PagerAdapter adapter)
-. getCount()는 page의 갯수가 몇 개인지를 알려주는 기능이고 getItem()은 adapter에게
ViewPager에 공급할 Fragment를 반환(제공)해 주는 역할을 한다.
ViewPager에 공급할 Fragment를 반환(제공)해 주는 역할을 한다.
댓글 없음:
댓글 쓰기