참고
- https://developer.android.com/guide/navigation/navigation-pass-data
 - https://developer.android.com/jetpack/androidx/releases/navigation
 - https://www.charlezz.com/?p=354
 - https://blog.naver.com/yoonhok_524/221530058636
 
종속성 추가
- 프로젝트 레벨
 
buildscript {
    repositories {
        google()
    }
    dependencies {
        def nav_version = "2.1.0"
        classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version"
    }
}
- 앱 레벨
 
apply plugin: "androidx.navigation.safeargs" or  apply plugin: "androidx.navigation.safeargs.kotlin"
dependencies {
  def nav_version = "2.1.0"
  // Java language implementation
  implementation "androidx.navigation:navigation-fragment:$nav_version"
  implementation "androidx.navigation:navigation-ui:$nav_version"
  // Kotlin
  implementation "androidx.navigation:navigation-fragment-ktx:$nav_version"
  implementation "androidx.navigation:navigation-ui-ktx:$nav_version"
}
Safe Arg
- 번들을 사용해도 되지만 안전하게 변수로 사용하는 방법
 - 방법
    
- 액션을 만든다.
 - 액션에 arg를 추가 한다.
 - 도착지에 arg 를 추가한다.
 
 - 
    
네비게이션 샘플
 - 
    
시작 지 액션 실행 - 자신이 정의 프래그먼트 이름(Register1Fragment)으로 xxxxxDirections 클래스(Register1FragmentDirections)가 자동 생성 되며 해당 클래스에 액션이 정의 되어 있다.
kotlin val action = Register1FragmentDirections.actionNavRegister1ToNavRegister2(it.arg) Navigation.findNavController(v).navigate(action) - 종착지 확인
    
- 자신이 정의한 이름에(Register2Fragment) xxxArgs 가 추가된 클래스가 자동 생성되되 미리 정의된 변수를 확인 할 수 있습니다.
 
val args :Register2FragmentArgs by navArgs() override fun onViewCreated(view: View, savedInstanceState: Bundle?) { log.d(args.name) } 
에러 발생 주의점
- cannot inline bytecode built with jvm target 1.8 into bytecode that is being built with jvm target 1.6. please specify proper ‘-jvm-target’ option
 - File-settings안의 kotlin compiler 안의 target JVM version을 바꿔준다
    
- File-Invalidate Caches / Restart 후 Build - Clean Project
 
 - 안되면
    
- build.gradle(module:app)안의 android{} 안에 kotlinOptions{jvmTarget = “1.8”} 을 넣는다