Navigation 설정 및 사용(Kotlin)
9148 단어 안드로이드JetpacknavigationKotlin
소개
Navigation 설정 방법과 사용법을 소개합니다.
「Navigation」이란?
Google이 제공하는 Jetpack의 구성 요소입니다.
프래그먼트 간의 전이와 같은 다양한 네비게이션 구현에 유용합니다.
환경
설정
Navigation 설치
루트 바로 아래의 "build.gradle"에 Navigation 버전을 추가합니다.
다른 기사에서 소개할 예정입니다만, Navigation과 병용해 「Safe Args」라고 하는 Gradle 플러그인을 사용하는 경우가 많습니다.
따라서 먼저 Navigation 버전을 상수화했습니다.
/build.gradle
buildscript {
ext {
+ nav_version = '2.3.5'
}
}
app 폴더 아래의 'build.gradle'에 종속성을 추가합니다.
/app/build.gradle
dependencies {
+ // Navigation
+ implementation "androidx.navigation:navigation-fragment-ktx:$rootProject.nav_version"
+ implementation "androidx.navigation:navigation-ui-ktx:$rootProject.nav_version"
}
이것으로 Navigation 설정이 완료됩니다.
용어
Navigation에 사용되는 용어를 소개합니다.
용어
설명
네비게이션
목적지 간 이동
목적지
앱 내에서 이동할 수 있는 위치(활동 및 조각)
액션
목적지 간의 연결
사용법
네비게이션 그래프 만들기
탐색 그래프는 대상과 작업을 저장하는 리소스 파일입니다.
Project >
res
폴더를 마우스 오른쪽 버튼으로 클릭 > New > Android Resource File파일 이름에
nav_graph
와 같은 이름을 입력합니다. 네비게이션 그래프를 복수 작성하는 경우는 ○○_nav_graph
라고 명명하면 됩니다.리소스 유형으로 탐색을 선택하고 확인 버튼을 누릅니다.
네비게이션 그래프 구현
네비게이션 그래프 파일을 만든 후 내용을 구현합니다.
다음은
MainFragment
에서 OssLicensesMenuActivity
로 전환하는 단순한 탐색 그래프입니다.nav_graph.xml
<?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/nav_graph"
app:startDestination="@id/main_fragment">
<fragment
android:id="@+id/main_fragment"
android:name="com.theuhooi.uhooipicbook.ui.main.MainFragment"
android:label=""
tools:layout="@layout/main_fragment">
<action
android:id="@+id/action_main_to_licenses"
app:destination="@id/licenses_activity" />
</fragment>
<activity
android:id="@+id/licenses_activity"
android:name="com.google.android.gms.oss.licenses.OssLicensesMenuActivity" />
</navigation>
네비게이션, 단편 및 활동은
id
초기 표시할 대상은 app:startDestination
로 id
로 지정합니다.Android Studio가 자동으로 미리 보기 때문에 매우 이해하기 쉽습니다.
화살표가 액션입니다.
활동에 내비게이션 호스트 추가
탐색 그래프를 구현한 후 활동에 탐색 호스트를 추가합니다.
탐색 호스트는 빈 컨테이너이며 전환할 때마다 컨테이너 내에서 대상이 바뀝니다.
여기서는 시작 대상으로 지정한
MainFragment
의 부모인 MainActivity
에 전체 탐색 호스트를 표시합니다.main_activity.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<androidx.fragment.app.FragmentContainerView
android:id="@+id/nav_host_fragment"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="0dp"
android:layout_height="0dp"
app:defaultNavHost="true"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:navGraph="@navigation/nav_graph" />
</androidx.constraintlayout.widget.ConstraintLayout>
이제
MainFragment
를 볼 수 있습니다.네비게이션 처리 구현
MainFragment
로부터 OssLicensesMenuActivity
에의 네비게이션 처리를 구현합니다.Safe Args 설정이 필요하므로 아래 기사를 참조하십시오.
htps : // 코 m / 보라 / ms / b73911 A fdc62 Ae 188 A 3b
네비게이션 그래프로부터 자동으로
MainFragmentDirections.actionMainToLicenses()
라고 하는 메소드가 생성되므로, 그 반환값 (액션)을 findNavController().navigate()
메소드의 인수에 건네주어 호출할 뿐입니다.MainFragment.kt
class MainFragment : Fragment() {
fun foo() {
findNavController().navigate(MainFragmentDirections.actionMainToLicenses())
}
}
이것만으로 네비게이션 처리를 구현할 수 있습니다.
결론
Navigation을 사용하여 단편과 액티비티 간의 화면 전환을 간단하게 실현할 수 있었습니다!
참고 링크
Reference
이 문제에 관하여(Navigation 설정 및 사용(Kotlin)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/uhooi/items/ce3264fa2609c141c454텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)