Skip to content

Commit 3fe0107

Browse files
committed
fix: Navigation Component Backstack 버그 수정
1 parent 145188c commit 3fe0107

File tree

6 files changed

+65
-74
lines changed

6 files changed

+65
-74
lines changed

presentation/src/main/java/com/stop/ui/alarmsetting/AlarmSettingFragment.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -111,8 +111,7 @@ class AlarmSettingFragment : Fragment() {
111111
//alarmSettingViewModel.makeAlarmWorker(transportLastTime.timeToBoard)
112112

113113
val navController = findNavController()
114-
navController.setGraph(R.navigation.nav_graph)
115-
navController.popBackStack(R.id.action_global_mapFragment, false)
114+
navController.popBackStack(R.id.mapFragment, false)
116115
requireActivity().viewModelStore.clear()
117116
}
118117

presentation/src/main/java/com/stop/ui/map/MapFragment.kt

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import android.view.LayoutInflater
77
import android.view.View
88
import android.view.ViewGroup
99
import androidx.activity.result.contract.ActivityResultContracts
10+
import androidx.core.os.bundleOf
1011
import androidx.fragment.app.Fragment
1112
import androidx.fragment.app.activityViewModels
1213
import androidx.lifecycle.asLiveData
@@ -16,7 +17,6 @@ import androidx.navigation.fragment.findNavController
1617
import com.google.android.material.bottomsheet.BottomSheetBehavior
1718
import com.skt.tmap.TMapPoint
1819
import com.stop.R
19-
import com.stop.RouteNavGraphDirections
2020
import com.stop.alarm.SoundService
2121
import com.stop.databinding.FragmentMapBinding
2222
import com.stop.model.Location
@@ -126,23 +126,13 @@ class MapFragment : Fragment(), MapHandler {
126126
}
127127

128128
binding.homePanel.viewPanelStart.setOnClickListener {
129-
findNavController().apply {
130-
setGraph(R.navigation.route_nav_graph)
131-
navigate(
132-
RouteNavGraphDirections.actionGlobalRouteFragment()
133-
.setStart(placeSearchViewModel.panelInfo)
134-
)
135-
}
129+
val bundle = bundleOf("start" to placeSearchViewModel.panelInfo)
130+
findNavController().navigate(R.id.action_mapFragment_to_route_nav_graph, bundle)
136131
}
137132

138133
binding.homePanel.viewPanelEnd.setOnClickListener {
139-
findNavController().apply {
140-
setGraph(R.navigation.route_nav_graph)
141-
navigate(
142-
RouteNavGraphDirections.actionGlobalRouteFragment()
143-
.setEnd(placeSearchViewModel.panelInfo)
144-
)
145-
}
134+
val bundle = bundleOf("end" to placeSearchViewModel.panelInfo)
135+
findNavController().navigate(R.id.action_mapFragment_to_route_nav_graph, bundle)
146136
}
147137
}
148138

presentation/src/main/java/com/stop/ui/route/RouteFragment.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,7 @@ class RouteFragment : Fragment() {
5656
backPressedCallback = object : OnBackPressedCallback(true) {
5757
override fun handleOnBackPressed() {
5858
val navController = findNavController()
59-
navController.setGraph(R.navigation.nav_graph)
60-
navController.popBackStack(R.id.action_global_mapFragment, false)
59+
navController.popBackStack(R.id.mapFragment, false)
6160
}
6261
}
6362
requireActivity().onBackPressedDispatcher.addCallback(this, backPressedCallback)

presentation/src/main/java/com/stop/ui/routedetail/RouteDetailFragment.kt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import android.view.LayoutInflater
66
import android.view.View
77
import android.view.ViewGroup
88
import androidx.core.view.GravityCompat
9-
import androidx.navigation.findNavController
109
import androidx.navigation.fragment.findNavController
1110
import com.stop.R
1211
import androidx.navigation.navGraphViewModels
@@ -74,8 +73,7 @@ class RouteDetailFragment : Fragment(), RouteDetailHandler {
7473

7574
binding.imageViewClose.setOnClickListener {
7675
findNavController().apply {
77-
setGraph(R.navigation.nav_graph)
78-
popBackStack(R.id.action_global_mapFragment, false)
76+
popBackStack(R.id.mapFragment, false)
7977
requireActivity().viewModelStore.clear()
8078
}
8179
}

presentation/src/main/res/navigation/nav_graph.xml

Lines changed: 57 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,26 @@
55
android:id="@+id/nav_graph"
66
app:startDestination="@id/mapFragment">
77

8-
<include app:graph="@navigation/route_nav_graph" />
9-
108
<fragment
119
android:id="@+id/mapFragment"
1210
android:name="com.stop.ui.map.MapFragment"
1311
android:label="MapFragment"
1412
tools:layout="@layout/fragment_map">
1513

14+
<action
15+
android:id="@+id/action_mapFragment_to_route_nav_graph"
16+
app:destination="@id/route_nav_graph" />
17+
<argument
18+
android:name="start"
19+
android:defaultValue="@null"
20+
app:argType="com.stop.model.route.Place"
21+
app:nullable="true" />
22+
<argument
23+
android:name="end"
24+
android:defaultValue="@null"
25+
app:argType="com.stop.model.route.Place"
26+
app:nullable="true" />
27+
1628
<action
1729
android:id="@+id/action_mapFragment_to_placeSearchFragment"
1830
app:destination="@id/placeSearchFragment" />
@@ -36,9 +48,49 @@
3648
app:destination="@id/mapFragment" />
3749
</fragment>
3850

39-
<action
40-
android:id="@+id/action_global_mapFragment"
41-
app:destination="@id/mapFragment" />
51+
<navigation
52+
android:id="@+id/route_nav_graph"
53+
app:startDestination="@id/routeFragment">
54+
55+
<fragment
56+
android:id="@+id/routeFragment"
57+
android:name="com.stop.ui.route.RouteFragment"
58+
android:label="RouteFragment"
59+
tools:layout="@layout/fragment_route">
60+
<action
61+
android:id="@+id/action_routeFragment_to_routeDetailFragment"
62+
app:destination="@id/routeDetailFragment" />
63+
<argument
64+
android:name="start"
65+
android:defaultValue="@null"
66+
app:argType="com.stop.model.route.Place"
67+
app:nullable="true" />
68+
<argument
69+
android:name="end"
70+
android:defaultValue="@null"
71+
app:argType="com.stop.model.route.Place"
72+
app:nullable="true" />
73+
</fragment>
74+
75+
<fragment
76+
android:id="@+id/routeDetailFragment"
77+
android:name="com.stop.ui.routedetail.RouteDetailFragment"
78+
android:label="RouteDetailFragment"
79+
tools:layout="@layout/fragment_route_detail">
80+
<action
81+
android:id="@+id/action_routeDetailFragment_to_alarmSetting"
82+
app:destination="@id/alarmSetting" />
83+
</fragment>
84+
85+
<fragment
86+
android:id="@+id/alarmSetting"
87+
android:name="com.stop.ui.alarmsetting.AlarmSettingFragment"
88+
android:label="fragment_alarm_setting"
89+
tools:layout="@layout/fragment_alarm_setting" />
90+
<action
91+
android:id="@+id/action_global_routeFragment"
92+
app:destination="@id/routeFragment" />
93+
</navigation>
4294

4395
<action
4496
android:id="@+id/action_global_placeSearchFragment"

presentation/src/main/res/navigation/route_nav_graph.xml

Lines changed: 0 additions & 47 deletions
This file was deleted.

0 commit comments

Comments
 (0)