Android JetPack에서 앱에서 탐색 기능을 구현하기 위한 공식 라이브러리입니다. 여기서 탐색이란 공식 문서에 따르면 사용자가 앱 내의 여러 콘텐츠를 탐색하고, 그곳에 들어갔다 나올 수 있게 하는 상호작용을 의미합니다.
라고 나와 있는데 하나의 화면에서 다른 화면으로 이동했다가 다시 나오는 그런 의미를 말하는 것 같습니다.
buildscript {
repositories {
google()
}
dependencies {
def nav_version = "2.5.3"
classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version"
}
}
plugins {
id 'com.android.application' version '8.0.0' apply false
id 'com.android.library' version '8.0.0' apply false
id 'org.jetbrains.kotlin.android' version '1.8.0' apply false
}
plugins {
id 'com.android.application'
...
id 'androidx.navigation.safeargs.kotlin'
}
dependencies {
// Navigation
implementation "androidx.navigation:navigation-fragment-ktx:2.6.0"
implementation "androidx.navigation:navigation-ui-ktx:2.6.0"
}
이러면 이제 Navigation 을 사용하기 위한 준비가 끝났습니다.
app:navGraph="@navigation/my_nav"
이 코드로 연결을 해주면 됩니다. <fragment
android:id="@+id/fragmentContainerView"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:defaultNavHost="true"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.5"
app:navGraph="@navigation/my_nav" />
findNavController()
메서드가 현재 화면의 Navigation Controller를 검색합니다.navigate()
메서드는 Navigation Controller를 통해 다른 화면으로 이동하는 역할을 합니다. 저는 listFragment에서 addFragment로 이동하기위해 매개변수에 넣어줬어요.class ListFragment : Fragment() {
lateinit var fragmentListBinding: FragmentListBinding
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
fragmentListBinding = FragmentListBinding.inflate(layoutInflater)
fragmentListBinding.run {
floatingActionButton.setOnClickListener {
findNavController().navigate(R.id.action_listFragment_to_addFragment)
}
}
return fragmentListBinding.root
}
}