уничтожение фрагмента, наблюдающего экземпляр живых данных в модели общего представления - PullRequest
0 голосов
/ 10 марта 2020

Я использую модель общего представления для получения значений из сокета в деятельности, с помощью наблюдения экземпляра живых данных и компонента навигации для навигации между фрагментами, поэтому возникает ситуация, когда я показываю значение квитанции об оплате, а затем пользователь нажимает кнопку оплаты этот фрагмент должен перейти к другому фрагменту и уничтожить первый, но то, что на самом деле происходит, все еще живо из-за экземпляра живых данных модели общего представления, который я наблюдал, так как убить этот экземпляр фрагмента при переходе к другому фрагменту

так что сначала я был в статусе поездки -> оплата -> спасибо

вот мой навигационный код

 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...