본문 바로가기
코드리뷰/코틀린 리뷰

안드로이드 코틀린 프래그먼트 만들기

by 디마드 2020. 9. 19.

간단한 프래그먼트 코드를 작성하고 프래그먼트 컨셉과 흐름을 파악해 보자

  1. build.gradle에 프로그먼트 dependencies를 추가한다. (-> Sync Now)

def nav_version = "2.3.0"
// Kotlin
implementation "androidx.navigation:navigation-fragment-ktx:$nav_version"
implementation "androidx.navigation:navigation-ui-ktx:$nav_version"

2.Fragment package 및 파일 생성

fragment용 패키지를 하나 생성하고 그 아래에 프래그먼트들을 생성한다.

New->Fragment->Fragment (Blank)

: fragment 간 이동 확인을 위해 main, result 2개 생성하고, java와 res디렉토리에 관련 파일들이 생성되었는지 확인한다.

3.Navigation 디렉토리와 파일 생성

프래그먼트 간의 이동을 위해 Navigation 디렉토리와 파일을 만든다.

navigation 디렉토리 : res->New->Android Resource Directory->Resource type:navigation 선택

Navigation 파일 : navigation->New->Navigation Resource File ->파일명 지정(예:nav_graph)

 

[navigation 생성]

 

프래그먼트를 추가하고 Action을 지정한다. Main 프래그먼트에서 Result 프래그먼트를 이어준다.

xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/nav_graph"
app:startDestination="@id/mainFragment">

<fragment
android:id="@+id/mainFragment"
android:name="com.guslang.fragmentpratice.fragment.MainFragment"
android:label="fragment_main"
tools:layout="@layout/fragment_main" >
<action
android:id="@+id/action_mainFragment_to_resultFragment"
app:destination="@id/resultFragment" />
</fragment>
<fragment
android:id="@+id/resultFragment"
android:name="com.guslang.fragmentpratice.fragment.ResultFragment"
android:label="fragment_result"
tools:layout="@layout/fragment_result" />
</navigation>

4.메인 액티비에 생성한 프래그먼트를 적용한다.

메인 전면에 프래그먼트가 배치될 수 있도록 layout 조건을 주고 Navigation을 지정한다.

<fragment
android:id="@+id/nav_host_fragment"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"

app:defaultNavHost="true"
app:navGraph="@navigation/nav_graph"
/>

*** 실행 화면 (다음 페이지) ***

실행 화면2 (돌아오기)

프래그먼트 사용법이 쉽지는 않다. Navigation 및 프래그먼트 생성과 연결 등 전체적으로 파악할 사항이 많다. 좀 더 익숙해진다면 액티비티간 이동이나 UI 전반적인 흐름을 파악할 수 있어서 프래그먼트를 많이 사용할 거 같다.

반응형

댓글