Android Navigation을 사용하여 매개변수를 전달하는 방법

5603 단어 Android

입문


이 글은 Goodpatch Advent Calendar 2019 13일째 글입니다.
올해를 돌이켜보면 안드로이드 개발에서 가장 눈길을 끄는 기능은 2019년 4월에 정식으로 발표된 Navigation 기능이라고 생각합니다.
Navigation 기능을 간단히 설명하면 GUI에서 Android의 화면 표시 기능 중 하나인 Fragment를 쉽게 관리할 수 있는 기능입니다.
이전에는 프레임워크를 관리하기 위해 코드를 작성하고 관리해야 했다.
따라서 화면 관리를 위해서는 디자인, 테스트, 코드 작성 외에 시간이 필요하다.
그러나 Navigation의 등장으로 Fragment의 관리는 코드에서 시각적으로 이해할 수 있는 GUI로 바뀌었다
갑작스런 화면 변경이 발생해 옮기는 방법이 바뀌어도 편안하게 변경할 수 있다.
Navigation을 사용하여 부표 화면을 만드는 것은 쉽지만 Fragment에서 파라미터를 제출할 때 나도 심심하다
이번에는 Navigation 매개 변수의 전달 방법을 소개해 드리겠습니다.

사용 시 필요한 플러그인 목록표


우선, 내비게이션을 처리하기 위해서, Gradle의 설정은 다음과 같은 설명이 필요합니다.
apply plugin: "androidx.navigation.safeargs.kotlin"
dependencies {
    implementation "android.arch.navigation:navigation-fragment:1.0.0"
    implementation "android.arch.navigation:navigation-ui:1.0.0"
    implementation "android.arch.navigation:navigation-fragment-ktx:1.0.0"
    implementation "android.arch.navigation:navigation-ui-ktx:1.0.0"
}
App Gradle 외에 Project Gradle도 기술해야 하니 잊지 말고 기술하세요!
dependencies {
    classpath "android.arch.navigation:navigation-safe-args-gradle-plugin:1.0.0"
}

내비게이션에서 처리하고 싶은 Fragment 추가 방법



이 화면은 Navigation을 관리하는 화면입니다. 이번에는 Navigation nu입니다.나는 호스트라는 이름으로 일한다.
관리하고 싶은 Fragment의 추가 방법도 xml로 작성하고 GUI에서 +가 있는 아이콘으로 추가할 수 있습니다.

프레임에 매개변수를 추가하는 방법


탐색 파일에서 미리 구성

  • 오른쪽 메뉴에서 Argument 옆의 +를 클릭하여 대화 상자를 표시합니다.
  • 추가할 매개변수 설정


    자신의 클래스는 Parcelable과 Serializable로 전달할 수 있습니다.
  • 설정한 후 XML에서 파일을 보면 fragment에argument의 내용을 추가합니다.

    action으로 매개 변수를 전달하는 방법

    binding.button.setOnClickListener {
         val action = FirstFragmentDirections.actionFirstFragmentToSecondFragment("hoge")
         findNavController().navigate(action)
    }
    
    Navigation 매개 변수 추가가 끝난 후 Clean Project를 수행하는 경우 action~ 메서드를 사용할 수 있습니다.
    매개변수를 전달할 수 있습니다.

    bundle로 매개 변수를 전달하는 방법

    
    binding.button.setOnClickListener {
         findNavController().navigate(R.id.thirdFragment, Bundle().apply {
              putString("hogehoge", "hogehoge")
         }
    }
    
    점은 내비게이션 파일에 설정된argument가 지정한 android:name 과 일치해야 합니다.

    감상


    Fragment의 관리가 코드에서 GUI로 바뀌었기 때문에 예전에는 종이로 정리하고 썼어요.
    Navigation을 사용하면 간단하게 교체할 수 있기 때문에 변경할 수 있다는 것이 장점이라고 생각합니다.
    개발에 주의하더라도 절대로 돌아오지 않을 것이며, 어떤 영향 때문에 수정할 수밖에 없을 것이다
    Fragment의 관리는 매우 번거롭고, 항상 Activity만으로 완성하려는 욕망이 있다
    망가져도 간단하게 재조립할 수 있기 때문에 응용 프로그램의 질을 높일 수 있다.
    Navigation만 사용하고 Build를 하면 Biuld의 잘못된 내용이 그렇게 친절하지 않아요.
    때때로 어디에서 잘못되었는지 조사하는 데 시간이 오래 걸린다.
    따라서 Navigation을 처리할 때 Biuld를 자주 치면 어디가 틀렸는지 쉽게 알 수 있다
    나는 그래도 부지런히 건축을 하는 것이 좋다고 생각한다.
    일부 구축 오류가 정리 항목에서 오류를 없앨 수 있기 때문에
    잘못이 있어도 서두르지 말고 너그러운 마음으로 대처하는 마음이 중요하다.

    끝내다


    이번에 소개해드린 내용을 Github으로 공유했습니다.
    관심 있으신 분들은 터치하시면 좋을 것 같아요.
    https://github.com/hayato-k/navigation-argument

    좋은 웹페이지 즐겨찾기