Navigation
2021. 8. 13. 16:55ㆍAndroid/AAC
- navigation이란? 프래그먼트 간 전환을 위해 스토리보드를 통해 액션을 제공하는 라이브러리
- navigation 사용법
- build 설정
- 사용할 프래그먼트 생성
- res > navigation > navigation파일에서 스토리보드 생성
- 액티비티 layout에서 navigation 설정
- (추가) type safety를 위한 설정
1. build 설정
def nav_version = "2.3.5"
// Kotlin
implementation "androidx.navigation:navigation-fragment-ktx:$nav_version"
implementation "androidx.navigation:navigation-ui-ktx:$nav_version"
2. 사용할 프래그먼트 생성
// FirstFragment
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val button = view.findViewById<Button>(R.id.button);
button.setOnClickListener {
// param이 있을 때
val action = FirstFragmentDirections.actionFirstFragmentToSecondFragment("Hello")
findNavController().navigate(action);
// param이 없을 때
// findNavController().navigate(R.id.action_firstFragment_to_secondFragment);
}
}
// SecondFragment
val args: SecondFragmentArgs by navArgs()
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val textView = view.findViewById<TextView>(R.id.textView)
textView.text = args.text
}
3. res > navigation > navigation파일에서 스토리보드 생성
4. 액티비티 layout에서 navigation 설정
<androidx.fragment.app.FragmentContainerView
android:id="@+id/fragment"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:defaultNavHost="true"
app:navGraph="@navigation/nav_graph" />
class SubActivity : AppCompatActivity() {
private lateinit var appBarConfiguration: AppBarConfiguration
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_sub)
// AppBar 사용을 위한 코드(사용안할거면 패스)
val navHostFragment =
supportFragmentManager.findFragmentById(R.id.fragment) as NavHostFragment
val navController = navHostFragment.navController
appBarConfiguration = AppBarConfiguration(navController.graph)
setupActionBarWithNavController(navController, appBarConfiguration)
}
override fun onSupportNavigateUp(): Boolean {
val navController = findNavController(R.id.fragment)
return navController.navigateUp(appBarConfiguration)
|| super.onSupportNavigateUp()
}
}
5. (추가) type safety를 위한 설정
// build.gradle(:project)
dependencies{
def nav_version = "2.3.5"
classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version"
}
// build.gradle(:app)
plugins {
...
id 'androidx.navigation.safeargs'
}
공식 문서 : https://developer.android.com/guide/navigation/navigation-getting-started
탐색 구성요소 시작하기 | Android 개발자 | Android Developers
이 주제는 탐색 구성요소를 설정하고 사용하는 방법을 설명합니다. 탐색 구성요소의 대략적인 개요는 탐색 개요를 참고하세요. 환경 설정 참고: 탐색 구성요소는 Android 스튜디오 3.3 이상이 필요
developer.android.com
'Android > AAC' 카테고리의 다른 글
Compose 감잡기 (0) | 2022.02.24 |
---|---|
Jetpack - Compose (0) | 2021.10.28 |
DataBinding (1) | 2021.08.13 |
ViewModel (1) | 2021.08.12 |
LiveData (0) | 2021.08.12 |