[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
만 받고싶은데
어떻게 할수 없나요?
댓글 입력