From 30b5a27d6009a50656682698a8f140d79a6f75de Mon Sep 17 00:00:00 2001 From: 62160052 <62160052@go.buu.ac.th> Date: Wed, 21 Sep 2022 21:39:59 +0700 Subject: [PATCH] Navigation action: popUpToInclusive attribute --- .../main/java/com/example/cupcake/FlavorFragment.kt | 5 +++++ .../main/java/com/example/cupcake/PickupFragment.kt | 5 +++++ .../main/java/com/example/cupcake/SummaryFragment.kt | 6 ++++++ app/src/main/res/layout/fragment_flavor.xml | 1 + app/src/main/res/layout/fragment_pickup.xml | 1 + app/src/main/res/layout/fragment_summary.xml | 1 + app/src/main/res/navigation/nav_graph.xml | 12 +++++++++--- 7 files changed, 28 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/example/cupcake/FlavorFragment.kt b/app/src/main/java/com/example/cupcake/FlavorFragment.kt index 9281484..35f2bf2 100644 --- a/app/src/main/java/com/example/cupcake/FlavorFragment.kt +++ b/app/src/main/java/com/example/cupcake/FlavorFragment.kt @@ -54,6 +54,11 @@ class FlavorFragment : Fragment() { } } + fun cancelOrder() { + sharedViewModel.resetOrder() + findNavController().navigate(R.id.action_flavorFragment_to_startFragment) + } + /** * Navigate to the next screen to choose pickup date. */ diff --git a/app/src/main/java/com/example/cupcake/PickupFragment.kt b/app/src/main/java/com/example/cupcake/PickupFragment.kt index 0a7f09f..47831c4 100644 --- a/app/src/main/java/com/example/cupcake/PickupFragment.kt +++ b/app/src/main/java/com/example/cupcake/PickupFragment.kt @@ -54,6 +54,11 @@ class PickupFragment : Fragment() { } } + fun cancelOrder() { + sharedViewModel.resetOrder() + findNavController().navigate(R.id.action_pickupFragment_to_startFragment) + } + /** * Navigate to the next screen to see the order summary. */ diff --git a/app/src/main/java/com/example/cupcake/SummaryFragment.kt b/app/src/main/java/com/example/cupcake/SummaryFragment.kt index dcdf4a7..a68fb73 100644 --- a/app/src/main/java/com/example/cupcake/SummaryFragment.kt +++ b/app/src/main/java/com/example/cupcake/SummaryFragment.kt @@ -23,6 +23,7 @@ import android.view.ViewGroup import android.widget.Toast import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels +import androidx.navigation.fragment.findNavController import com.example.cupcake.databinding.FragmentSummaryBinding /** @@ -55,6 +56,11 @@ class SummaryFragment : Fragment() { } } + fun cancelOrder() { + sharedViewModel.resetOrder() + findNavController().navigate(R.id.action_summaryFragment_to_startFragment) + } + /** * Submit the order by sharing out the order details to another app via an implicit intent. */ diff --git a/app/src/main/res/layout/fragment_flavor.xml b/app/src/main/res/layout/fragment_flavor.xml index e3816eb..c1f6220 100644 --- a/app/src/main/res/layout/fragment_flavor.xml +++ b/app/src/main/res/layout/fragment_flavor.xml @@ -114,6 +114,7 @@ android:id="@+id/cancel_button" android:layout_width="0dp" android:layout_height="wrap_content" + android:onClick="@{() -> flavorFragment.cancelOrder()}" android:text="@string/cancel" android:layout_marginEnd="@dimen/side_margin" style="?attr/materialButtonOutlinedStyle" diff --git a/app/src/main/res/layout/fragment_pickup.xml b/app/src/main/res/layout/fragment_pickup.xml index fbba9ba..15bac55 100644 --- a/app/src/main/res/layout/fragment_pickup.xml +++ b/app/src/main/res/layout/fragment_pickup.xml @@ -109,6 +109,7 @@ <Button android:id="@+id/cancel_button" style="?attr/materialButtonOutlinedStyle" + android:onClick="@{() -> pickupFragment.cancelOrder()}" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginEnd="@dimen/side_margin" diff --git a/app/src/main/res/layout/fragment_summary.xml b/app/src/main/res/layout/fragment_summary.xml index b7ad9e4..7dac7af 100644 --- a/app/src/main/res/layout/fragment_summary.xml +++ b/app/src/main/res/layout/fragment_summary.xml @@ -144,6 +144,7 @@ <Button android:id="@+id/cancel_button" style="?attr/materialButtonOutlinedStyle" + android:onClick="@{() -> summaryFragment.cancelOrder()}" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="@dimen/margin_between_elements" diff --git a/app/src/main/res/navigation/nav_graph.xml b/app/src/main/res/navigation/nav_graph.xml index 99c61b1..4a6b71b 100644 --- a/app/src/main/res/navigation/nav_graph.xml +++ b/app/src/main/res/navigation/nav_graph.xml @@ -37,7 +37,9 @@ app:destination="@id/pickupFragment" /> <action android:id="@+id/action_flavorFragment_to_startFragment" - app:destination="@id/startFragment" /> + app:destination="@id/startFragment" + app:popUpTo="@id/startFragment" + app:popUpToInclusive="true" /> </fragment> <fragment android:id="@+id/pickupFragment" @@ -49,7 +51,9 @@ app:destination="@id/summaryFragment" /> <action android:id="@+id/action_pickupFragment_to_startFragment" - app:destination="@id/startFragment" /> + app:destination="@id/startFragment" + app:popUpTo="@id/startFragment" + app:popUpToInclusive="true" /> </fragment> <fragment android:id="@+id/summaryFragment" @@ -58,6 +62,8 @@ tools:layout="@layout/fragment_summary" > <action android:id="@+id/action_summaryFragment_to_startFragment" - app:destination="@id/startFragment" /> + app:destination="@id/startFragment" + app:popUpTo="@id/startFragment" + app:popUpToInclusive="true" /> </fragment> </navigation> \ No newline at end of file -- GitLab