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