간단한 프래그먼트 코드를 작성하고 프래그먼트 컨셉과 흐름을 파악해 보자
- 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 전반적인 흐름을 파악할 수 있어서 프래그먼트를 많이 사용할 거 같다.
'코드리뷰 > 코틀린 리뷰' 카테고리의 다른 글
안드로이드 마사지 어플 만들기 (코틀린) (2) | 2020.10.04 |
---|---|
로또 931회 당첨번호 예상! (안드로이드 로또 앱) (1) | 2020.09.30 |
안드로이드 앱 수평 맞추기 게임 아이디어 (0) | 2020.09.19 |
댓글