Как повторно использовать фрагмент android в стеках навигации? - PullRequest
0 голосов
/ 14 июля 2020
• 1000 Итак, у меня есть одно основное действие в приложении, которое обрабатывает только нижнюю навигацию. В настоящее время у меня 5 вкладок, и я заполняю каждую вкладку навигацией с вложенными графами точно так же, как в этом официальном Android примере архитектуры , что дает мне возможность иметь 5 независимых стеков навигации. , по одному на каждую вкладку. Для представления экранов я использую Android фрагментов, некоторые из которых я пытаюсь повторно использовать в разных местах каждого стека навигации. Каждый файл навигации обычно выглядит так:

<fragment
    android:id="@+id/gallery"
    android:name="test.flows.socialNetwork.gallery.GalleryFragment"
    android:label="@string/fotoghrafii"
    tools:layout="@layout/fragment_gallery">
    <action
        android:id="@+id/action_gallery_to_countries"
        app:destination="@id/countriesList" />
    <action
        android:id="@+id/action_gallery_to_profile"
        app:destination="@id/galleryToInterlocutorProfile" />
</fragment>
<fragment
    android:id="@+id/countriesList"
    android:name="test.flows.common.countries.CountriesListFragment"
    android:label="@string/vybor_strany"
    tools:layout="@layout/fragment_select_country"/>
<navigation android:id="@+id/galleryToInterlocutorProfile"
    app:startDestination="@id/galleryToInterlocutorProfile">
    <fragment
        android:id="@+id/galleryToInterlocutorProfile"
        android:name="test.flows.socialNetwork.userProfile.UserProfileFragment"
        android:label="galleryToInterlocutorProfile"
        tools:layout="@layout/fragment_interlocutor_profile" />
</navigation>
Проблема в том, что все фрагменты в навигации ведут себя как синглтоны - если я заполняю один пользовательский интерфейс данными, все остальные с тем же классом относятся к нему. в других местах / стеках навигации (относится к тому же экземпляру) и измените соответствующим образом. Я хочу повторно использовать фрагмент с тем же пользовательским интерфейсом, но для разных целей - один будет показывать данные пользователя приложения, другой - друга пользователя, третий - другого друга и т. Д. c. Итак, в основном мне нужны разные экземпляры одного и того же фрагмента, а не ссылки на один и тот же фрагмент во всем приложении. Код для них очень похож, поэтому я бы использовал один класс ** UserProfileFragment ** для всех из них, чтобы избежать дублирования кода. Пожалуйста, дайте мне знать, если вам нужна дополнительная информация или пояснения, поскольку я не являюсь разработчиком Android на постоянной основе и могу неправильно использовать соглашения и термины.

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

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