Android Fragment 데이터 전달 safeargs 활용 (코틀린)

탭 구조에서 프래그먼트 간 이동이 발생할 때 탭도 이동하고 데이터도 전달해야 하는 경우가 있습니다. safeargs 를 통해 데이터를 전달하고 받는 방법입니다.

1. Gradle 설정

plugins {
    /** 생략 **/
    id 'androidx.navigation.safeargs.kotlin' version '2.7.7' apply false //추가하기
}
plugins { 
    id 'androidx.navigation.safeargs'  // 추가하기
}

2. navigation.xml safeArgs & action 설정

    // 데이터 전달할 곳
    <fragment
    android:id="@+id/navigation_list"
    android:name="com.js.view_job.ui.list.ListFragment"
    android:label="@string/title_list">
    
        <action
        android:id="@+id/goToViewFragment"
        app:destination="@id/navigation_view"
        app:launchSingleTop="true">
        
            <argument
            android:name="argsUrl"
            app:argType="string" />
        </action>
    </fragment>
        
    // 데이터 받을 곳    
    <fragment
        android:id="@+id/navigation_view"
        android:name="com.js.view_job.ui.view.ViewFragment"
        android:label="@string/title_view" >
        
        <argument
        android:name="argsUrl"
        android:defaultValue=""
        app:argType="string" />
    </fragment>

3. Fragment 에서 데이터를 전달하고 받는 코드

// 데이터 전달할 곳
val companyUrl = jobSite.companyUrl ?: ""
val action = ListFragmentDirections.goToViewFragment(companyUrl)
findNavController().navigate(action)


// 데이터 받을 곳
private val args: ViewFragmentArgs by navArgs()
val companyUrl = args.argsUrl

결론



Related Posts