이전 학습: 프래그먼트 사용

프래그먼트 예제

학습목표

1. 개요 - 태블릿과 스마트폰에서 다른 화면 구현하기

  1. TitlesFragment에서는 제목을 ListView로 표시하고, DetailsFragment에서는 ListView에서 선택된 제목의 상세정보를 표시한다.
  2. 태블릿에서는 TitlesFragmentDetailsFragment가 나오고, 스마트폰의 경우에는 첫화면(MainActivity)에서 TitlesFragment만 나오고, ListView에 나열된 항목이 선택되면 해당 항목에 대한 상세정보를 표시하는 DetailsFragment를 다른 화면(DetailsActivity)으로 표시한다.

2. TitlesFragment 구현

[연습4] - 리스트뷰를 포함한 TitlesFragment 정의하기

3. 메인 액티비티와의 연결 및 정보 전달


3.1 (방법1) 액티비티에서 직접 구현된 메소드 호출

[연습5] - 프래그먼트-액티비티 통신 방법 (액티비티에서 직접 구현된 메소드 호출)


3.2 (방법2) 인터페이스를 구현한 액티비티를 인터페이스로 접근

[연습6] - 프래그먼트-액티비티 통신 방법 (인터페이스를 구현한 액티비티를 인터페이스로 접근)


3.3 두 방법의 비교

장점 단점
방법1 간단한 구조 특정 Activity에 종속
방법2 정의된 인터페이스를 구현하는 모든 Activity와 통신 가능 다소 복잡한 구조

4. 태블릿용 화면 레이아웃 추가

[연습7]- 태블릿용 화면 레이아웃 추가하기

5. DetailsFragment 구현


5.1 프래그먼트로 인자 (argument) 전달 방법

[연습8] - 선택된 항목의 상세정보를 보여주는 DetailsFragment 추가하기

6. 스마트폰용 TitlesFragmentDetailsFragment을 스마트폰용에서 재사용

  1. MainActivityDetailsActivity에게 리스트뷰의 항목 선택 번호를 인텐트의 Extra를 통해 전달한다.

  2. DetailsActivityMainActivity로부터 전달받은 리스트뷰의 항목 선택 번호를 새로이 생성된 DetailsFragment에 전달하고 새로이 생성된 DetailsFragment 객체를 기존 것과 교체

핵심 정리