[Android] Safe Args를 사용하여 특정 Fragment에서만 데이터를 받아 올 수 있나요?

조회수 314회

Navigation Component를 사용하여 화면전환을 하고 있는데요.

바텀 내비게이션바에 Home 메뉴와 작성 메뉴 두가지가 있습니다.

작성메뉴는 A프래그먼트를 보여주고 여기서 B프래그먼트로 이동할 수 있습니다.

B 프래그먼트에서는 운동 데이터들을 나열해서 보여주는데

이중 하나를 선택하면 A로 돌아감과 동시에 선택한 데이터가 전달됩니다.

Safe Args를 이용해서요.

여기까지는 좋은데..

A화면에서는

<fragment
        android:id="@+id/writeRoutine"
        android:name="com.example.lightweight.fragment.WriteRoutineFragment"
        android:label="fragment_write_routine"
        tools:layout="@layout/fragment_write_routine" >
        <action
            android:id="@+id/action_writeRoutineFragment_to_workoutListTabFragment"
            app:destination="@id/workoutListTabFragment" />
        <argument
            android:name="workout"
            app:argType="string"
            app:nullable="true"
            android:defaultValue="@null"/>
    </fragment>

이러한 코드로 argument를 받습니다. (nav_graph 코드입니다.)

그런데 이게 특정화면에서만 받는게 안되더라구요.

제가 지금MVVM 패턴을 사용하고 있고 ViewModel을 activityviewmodels를 이용하여

생성하고 있습니다. activityviewmodels를 사용하는 이유는 데이터를 작성도중에도

다른 화면으로 전환시에 계속 유지하기위해 사용하고있습니다.

B화면에서 A화면으로 인수를 전달후,

A화면에서 다른 메뉴를 갔다가 다시오면 이 데이터가 null로 오는게 아니라

B에서 받은 데이터 args가 그대로 있습니다..

저는 B화면에서만 데이터를 받던지 혹은 다른화면에서는 적어도 null만 받고싶은데

어떻게 할수 없나요?

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)