
안드로이드 개발 시 자주 마주치는 네비게이션 컴포넌트, 특히 NavController를 찾는 두 가지 방법에 대해 알아보고, 각각의 장단점을 비교해보는 시간을 가지려고 합니다.
안드로이드의 네비게이션 컴포넌트는 앱 내에서 화면 이동(네비게이션)을 용이하게 관리해 주는 매우 중요한 요소입니다. 그렇다면 NavController를 어떻게 찾을 수 있을까요? 아래에서 자세히 알아보겠습니다.
방법 1: 공식 문서 방식
공식 문서는 Activity에서 NavHostFragment를 찾고, 그 안에 있는 NavController를 사용하는 방법을 권장합니다.
val navHostFragment =
supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment
val navController = navHostFragment.navController
이 방법의 장점은 코드가 명시적이며, Activity 내에서 네비게이션 로직을 관리할 때 매우 직관적이라는 점입니다. 개발자가 코드를 보고 바로 이해할 수 있으며, 디버깅하기도 쉽습니다. 하지만, 주로 Activity에 한정되어 사용되며, Fragment나 Adapter에서 사용할 때 추가적인 작업이 필요할 수 있습니다.
방법 2: Navigation.findNavController(View) 사용하기
또 다른 방법은 Navigation 유틸리티 클래스의 findNavController(View) 메소드를 사용하여 View를 통해 NavController를 찾는 것입니다.
btnGoProfileDetail.setOnClickListener {
val navController =
Navigation.findNavController(requireActivity().findViewById(R.id.fragment_container_view))
navController.navigate(R.id.action_fragmentMain_to_fragmentProfileDetail)
}
이 방식의 가장 큰 장점은 Fragment나 ViewHolder 등에서 사용하기 매우 편리하다는 점입니다. 직접적으로 View를 통해 NavController에 접근하기 때문에, 특히 Fragment 내부에서 네비게이션 작업을 수행할 때 더욱 유용합니다. 하지만, 이 방법을 사용할 때는 View가 올바르게 NavController를 찾을 수 있는 NavHost와 연결되어 있어야 하며, 그렇지 않은 경우 예외가 발생할 수 있습니다.
결론
따라서, 어떤 방법이 더 좋은지는 개발 상황에 따라 다릅니다. 만약 Activity에서 네비게이션 로직을 중앙집중적으로 관리하고 싶다면 공식 문서의 방법을, Fragment나 Adapter 내에서 네비게이션을 수행하고자 한다면 Navigation.findNavController(View)를 사용하는 것이 더 적합할 수 있습니다. 개발자의 의도와 애플리케이션의 구조에 맞게 가장 효율적이고 안정적인 방법을 선택하는 것이 중요합니다.
'Android > Android Core' 카테고리의 다른 글
[Android] 키패드가 올라오면서 UI 요소가 같이 올라오는 현상 해결하기 (0) | 2024.06.20 |
---|---|
[Android/Kotlin] 안드로이드 ConstraintLayout에서 1:1 비율로 뷰 설정하기 (1) | 2024.06.10 |
[Android/Kotlin] BaseFragment를 ViewBinding과 DataBinding 방식으로 생성하는 방법 (0) | 2024.05.13 |
[Android] 안드로이드의 Instrumentation 클래스 소개 (0) | 2024.05.07 |
[Android] 안드로이드에서 Rect 클래스 활용하기 (0) | 2024.05.03 |