반응형

이 게시물은 다음 링크를 참조하여 학습했습니다.

 

프래그먼트  |  Android 개발자  |  Android Developers

A Fragment represents a behavior or a portion of user interface in an Activity. You can combine multiple fragments in a single activity to build a multi-pane UI and reuse a fragment in multiple activities. You can think of a fragment as a modular section

developer.android.com

 

다양한 화면 크기 지원  |  Android 개발자  |  Android Developers

Android 기기는 다양한 모양과 크기로 제공되므로 앱의 레이아웃이 유연해야 합니다. 레이아웃은 특정 화면 크기와 가로세로 비율을 가정하는 고정 크기로 정의되지 않아야 하며 다양한 화면 크

developer.android.com

 

안드로이드 프래그먼트 기본 사용법. (Android Fragment)

1. 안드로이드 Fragment 안드로이드에서 화면에 출력되는 UI 구성의 가장 기본이 되는 요소는 Activity입니다. 안드로이드 앱이 TextView, Button 등의 위젯을 화면에 표시하기 위해서는 최소한 하나의 Act

recipes4dev.tistory.com

 

제목과 상세 내용으로 나뉘어진 Fragment 예제. (Titles and Details Fragment Example)

1. 다양한 화면 크기 및 화면 모드를 위한 Fragment 앞서 작성한 Fragment 관련 글과 예제를 통해 Fragment의 개념 및 기본 사용법, FragmentManager, ListView를 가지는 ListFragment로의 확장 등에 대해 살펴보..

recipes4dev.tistory.com

 

hongdroid홍드로이드

안녕하세요 구디에서 신입 앱 개발자로서의 삶을 살아가고 있는 홍드로이드 라고 합니다. 이 채널에서는 IT 계열 앱 개발자는 도대체 어떻게 하루를 보낼까 하는 분들을 위해서 만들어졌습니다.

www.youtube.com

 

프래그먼트 관리자  |  Android 개발자  |  Android Developers

참고: Navigation 라이브러리를 사용하여 앱의 탐색을 관리하는 것이 좋습니다. 프레임워크는 프래그먼트, 백 스택, 프래그먼트 관리자 사용에 관한 권장사항을 따릅니다. Navigation에 관한 자세한

developer.android.com

 

Fragment transactions  |  Android 개발자  |  Android Developers

At runtime, a FragmentManager can add, remove, replace, and perform other actions with fragments in response to user interaction. Each set of fragment changes that you commit is called a transaction, and you can specify what to do inside the transaction us

developer.android.com

오늘은 Fragments를 공부했다. 

Fragments의 개념을 알기위해 구글링을 통해 이것저것 찾아봤는데, 잘 이해가 가지 않았다.

블로그에 있는 블로그들은 FrameLayout을 통해 fragments를 구현한 예제가 많았다.

developer android에서 Fragments에 대해 정의한 글을 정독하고 다시 유튜브와 블로그를 보니Fragments에 대해 이해할 수 있었다.

1. Fragments

 1) 정의

 처음에 xml파일에 fragment가 정의되어 있는 것을 보고 fragments는 위젯인가??? 하는 생각을 가졌다.

 한마디로 정의하자면 fragment는 "다른 액티비티에 재사용할 수 있는 '하위 액티비티'와 같은 개념" 이다.

 그동안 공부하면서 앱을 구현할 때, 여러개의 java파일을 만든 적이 많았는데

 생각해보면 그동안 만들었던 java파일은 데이터를 저장하는 틀이 되는 class였거나,

 ListView, RecyclerView, ViewPager등을 만들 때 구현한 Adapter였다.

 Intent를 구현하면서 별도의 액티비티를 만든 적이 있긴 하지만, 그건 빈 액티비티였다.

 Adapter나 데이터 저장 틀이 되는 class를 만들면서 같은 java파일을 만들었단 이유로 액티비티로 착각해서 Fragment를 이해하는데 오래걸렸던 것 같다.

 그래도 이해가 되지 않는다면 다음 화면을 보면 된다.

Phone Fragment

 메인 화면 안에 별도로 동작하는 두 개의 fragment가 있다.

 예를 들어 뉴스 어플 같은 경우, Fragment1에 위치한 뉴스 리스트와, Fragment2에 위치한 뉴스 기사 내용은 별도로 동작한다. 

 이처럼 Fragment를 이용하면 한 화면 안에 각각의 액티비티를 갖는 여러개의 작은 화면을 구현할 수 있다.

 2) 액티비티에 프래그먼트 추가

 액티비티에 프래그먼트를 추가하는 방법은 크게 3가지가 있다.

  (1) 프래그먼트를 액티비티의 레이아웃 파일 안에 선언

   구문

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <fragment android:name="com.example.news.ArticleListFragment"
            android:id="@+id/list"
            android:layout_weight="1"
            android:layout_width="0dp"
            android:layout_height="match_parent" />
    <fragment android:name="com.example.news.ArticleReaderFragment"
            android:id="@+id/viewer"
            android:layout_weight="2"
            android:layout_width="0dp"
            android:layout_height="match_parent" />
</LinearLayout>
cs

 

   MainActivity.java를 거치지 않고 xml에서 직접 설정해주는 방법이다.

 

  (2) 프로그래밍 방식으로 브래그먼트를 기존의 ViewGroup에 추가

   구문

1
2
3
4
5
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
Fragment fragment = new Fragment();
fragmentTransaction.add(R.id.fragment_container, fragment);
fragmentTransaction.commit();
cs

   (1)번과 다르게 MainActivity를 거쳐서 FragmentManager의 FragmentTransaction 인스턴스를 통해 추가한다.

  (3) FrameLayout 사용

   (2)번과 방법은 유사하나, FrameLayout을 사용하여 하나의 레이아웃에서 여러개의 액티비티를 실행할 수 있다.

2. FragmentManager : 프래그먼트 백 스택을 관리한다. 

 FragmentTransaction을 통해 프래그먼트를 추가, 삭제, 변경할 수 있고,

 레이아웃 컨테이너 내의 현재 프래그먼트를  findFragmentByID / findFragmentByTag를 통해 참조를 가져올 수 있다.

 1) FragmentTransaction : 프래그먼트를 추가, 삭제, 변경한다.

  자세한 속성은 developer android를 보면 알 수 있다.

 

FragmentTransaction  |  Android 개발자  |  Android Developers

FragmentTransaction public abstract class FragmentTransaction extends Object java.lang.Object    ↳ androidx.fragment.app.FragmentTransaction Static library support version of the framework's FragmentTransaction. Used to write apps that run on platform

developer.android.com

  이 글에선 자주 사용할 것 같은 속성만 정리했다.

메서드 설명
add() 프래그먼트를 추가한다.
remove() 프래그먼트를 제거한다.
replace() 프래그먼트를 바꾼다. ( remove() + add() ) 
commit() 변경사항을 저장한다.

 

반응형

+ Recent posts