Я использую модель общего представления для получения значений из сокета в деятельности, с помощью наблюдения экземпляра живых данных и компонента навигации для навигации между фрагментами, поэтому возникает ситуация, когда я показываю значение квитанции об оплате, а затем пользователь нажимает кнопку оплаты этот фрагмент должен перейти к другому фрагменту и уничтожить первый, но то, что на самом деле происходит, все еще живо из-за экземпляра живых данных модели общего представления, который я наблюдал, так как убить этот экземпляр фрагмента при переходе к другому фрагменту
так что сначала я был в статусе поездки -> оплата -> спасибо
вот мой навигационный код
private fun updateTripStatusUI(isPayed: Boolean = false) {
if (isPayed) {
findNavController(R.id.navigationFragment).popBackStack()
findNavController(R.id.navigationFragment).navigate(
TripStatusFragmentDirections.actionTripStatusFragmentToThanksFragment()
)
} else
findNavController(R.id.navigationFragment).navigate(TripStatusFragmentDirections.actionGlobalPaymentFragment())
}
и вот мой график
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/trip_graph"
app:startDestination="@id/tripStatusFragment">
<fragment
android:id="@+id/tripStatusFragment"
android:name="package.TripStatusFragment"
android:label="fragment_trip_status"
tools:layout="@layout/fragment_trip_status">
<action
android:id="@+id/action_tripStatusFragment_to_thanksFragment"
app:destination="@id/thanksFragment"
app:enterAnim="@anim/nav_default_enter_anim"
app:exitAnim="@anim/nav_default_exit_anim"
app:popEnterAnim="@anim/popup_enter"
app:popExitAnim="@anim/popup_exit" />
</fragment>
<fragment
android:id="@+id/paymentFragment"
android:name="package.PaymentFragment"
android:label="PaymentFragment"
tools:layout="@layout/fragment_payment" />
<fragment
android:id="@+id/thanksFragment"
android:name="package.ThanksFragment"
android:label="ThanksFragment"
tools:layout="@layout/fragment_thanks" />
<action
android:id="@+id/action_global_paymentFragment"
app:destination="@id/paymentFragment"
app:enterAnim="@anim/nav_default_enter_anim"
app:exitAnim="@anim/nav_default_exit_anim"
app:popEnterAnim="@anim/nav_default_pop_enter_anim"
app:popExitAnim="@anim/nav_default_pop_exit_anim" />
</navigation>
и в ThanksFragment я вернуться к TripStatusFragment с этой строкой
findNavController().navigate(R.id.tripStatusFragment)