Fragment ?
Activity 위에서 보여지는 View입니다. 즉 Activity 위에서 기생합니다.
절대 혼자서 보여질 수 없습니다.
Fragment 간의 이동은 반드시 Activity를 통해서 이동합니다.
Activity 안에서 구조는 같지만 Fragment를 이용해서 화면이 달라지도록 만듭니다.
Fragment는 Activity에 존재하는 공통 자원(Resources)을 이용할 수 있습니다.
테블릿(허니콤 이상)에서 화면을 분할하기 위한 용도로 개발되었습니다.
화면 분할 이외에 FrameLayout을 대체할 수도 있는 View로 사용됩니다.
Fragment가 바뀌면서 파라미터로 데이터를 전달할 수 있습니다.
한마디로, 한 화면(Activity)에서 화면(Activity) 이동 없이 여러 레이아웃을 보여줄 수 있습니다.
View Pager(Flipper)
하나의 Activity 안에 여러 Fragment를 올려놓고 좌/우로 스크롤하여 Frament를 이동시킬때 사용하는 클래스입니다.
일반적으로 좌/우 화면을 전환할 경우 Gallery, HorizontalScrollView, 등을 이용하여 개발을 많이 하는데, 전문적으로 화면 전환을 위해 만들어진 ViewPager를 이용하면 좀 더 편리하고 기능적인 화면을 구성 할 수 있습니다.
Fragment 준비하기
My Fragment라는 프로젝트를 만들어 보겠습니다.
Fragment 만들기
New > fragment > fragment(Black) 를 통해 Fragment를 만듭니다.
MainFragment.java 파일을 수정합니다.
public class MainFragment extends Fragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
// 화면(Fragment)마다 타이틀을 다르게 줄 수 있다.
getActivity().setTitle("프래그먼트 타이틀");
((MainActivity) getActivity()).getSupportActionBar().hide();
// 해당 프래그먼트가 보여줄 Layout을 정의한다.
LinearLayout layout = (LinearLayout) inflater.inflate(R.layout.fragment_main, container, false);
layout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
((MainActivity) getActivity()).getSupportActionBar().show();
}
});
return layout;
}
}
또한, Layout 에 fragment_main.xml이 만들어졌습니다.
Fragment를 이용하기 위해선 레이아웃을 변경해야합니다.
activity_main.xml 레이아웃을 아래와 같이 수정합니다.
노란부분에 있는 fragment_main 을 기본(Default) Fragment로 지정합니다.
그 Fragment가 보여줄 Layout에 대한 정의를 MainActivity
결과 화면입니다.