При обратном нажатии фрагмента предотвратить вызов onViewCreated предыдущего фрагмента с помощью навигационного графа - PullRequest
0 голосов
/ 21 января 2019

Я использую навигацию Jetpack для навигации между фрагментами.

У меня есть два фрагмента UserListFragment и ProfileFragment onViewCreated метод UserListFragment называется API сервера, и при щелчке любого элемента пользователь перенаправляет на profileFragment.

Если пользователь нажимает обратно из ProfileFragment, то он должен прийти к работающему userListFragment. Но onViewCreated метод вызывает снова, поэтому API снова вызывает для получения данных с сервера.Я не хочу называть onViewCreate первого фрагмента.Мне нужно то же поведение, что и FragmentManager.add (), а не FragManager.replace ().

Вот код, который я написал для навигации:

<fragment
    android:id="@+id/navigationUserListFragment"
    android:name="packageName.dashboard.UserListFragment"
    android:label="fragment_userlist"
    tools:layout="@layout/fragment_user_list">

   <action
        android:id="@+id/actionToProfile"
        app:destination="@id/navigationProfile"
        app:launchSingleTop="true"
        app:popUpTo="@id/navigationUserListFragment" />
</fragment>


<fragment
    android:id="@+id/navigationProfile"
    android:name="package.dashboard.ProfileFragment"
    android:label="profile_fragment"
    tools:layout="@layout/fragment_profile" />

Так что мой вопрос к как я могу запретить звонить onViewCreated, когда пользователь нажимает на второй фрагмент.

Заранее спасибо

1 Ответ

0 голосов
/ 21 января 2019

Метод OnViewCreated будет вызываться всякий раз, когда вы снова приходите в UserListFragment из ProfileFragment, потому что всякий раз, когда вы собираетесь открыть новый фрагмент профиля, представление предыдущего фрагмента будет уничтожено.

Для вашей задачи, я думаю, вы должны использовать механизм LiveData или управлять своим состоянием данных List на основе, если оно имеет значение, тогда API не должен вызывать. Да Если на экране профиля есть какие-либо изменения, то интерфейс через связь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...