Я использую Android Компонент навигации Jetpack с нижней панелью навигации , например:
![Navigation graph: Navigation graph:](https://i.stack.imgur.com/x5bjOm.png)
![Bottom navigation bar: Bottom navigation bar:](https://i.stack.imgur.com/1HRGx.png)
Давайте сосредоточимся на пунктах назначения для дома и панели мониторинга, на панели инструментов отображается список отделов, в каждом отделе отображается список продуктов, а для каждого продукта - подробное описание. , Пока все работает нормально.
Однако Home должен отображать полный список продуктов напрямую , и вот вопрос: как я могу отобразить фрагмент product_list
непосредственно на Home, когда приложение запускается (и каждый раз при доступе к Home)?
Обратите внимание, что я не могу поместить код product_list
непосредственно во фрагмент Home, потому что тогда навигация из Dashboard будет go к Home.
Кроме того, если я добавлю findNavController().navigate(HomeFragmentDirections.nextAction())
к фрагменту Home onCreateView(...)
, каждый раз, когда я go к Home, он отображает список продуктов, а также кнопку Up на панель приложения, которая никуда не денется (она переходит в Home, который снова перенаправляет на product_list
).
![App action bar: App action bar:](https://i.stack.imgur.com/DzzqZ.png)
Мне нужен только Кнопка «Вверх» при доступе к product_list
через список отделов на информационной панели. product_list
должен отображаться в Home, как если бы это был сам Home.
Итак, я ищу способ напрямую связать эти два фрагмента, без каких-либо транзакций или избегая Кнопка «Вверх» на панели приложения (возможно, за счет исключения добавления транзакции в стек транзакций).
<?xml version="1.0" encoding="utf-8"?>
<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/bottom_nav"
app:startDestination="@+id/navigation_home">
<fragment
android:id="@+id/navigation_home"
android:name="cu.lcnicolau.ui.home.HomeFragment"
android:label="@string/title_home"
tools:layout="@layout/fragment_home">
<action
android:id="@+id/next_action"
app:destination="@id/product_list">
<argument
android:name="departmentId"
android:defaultValue="0" />
</action>
</fragment>
<fragment
android:id="@+id/navigation_departments"
android:name="cu.lcnicolau.ui.departments.DepartmentsFragment"
android:label="@string/title_departments"
tools:layout="@layout/fragment_departments">
<action
android:id="@+id/next_action"
app:destination="@id/product_list" />
</fragment>
<fragment
android:id="@+id/product_list"
android:name="cu.lcnicolau.ui.products.ItemListFragment"
android:label="@string/title_products"
tools:layout="@layout/item_list">
<action
android:id="@+id/next_action"
app:destination="@id/product_detail" />
<argument
android:name="departmentId"
app:argType="integer" />
</fragment>
<fragment
android:id="@+id/product_detail"
android:name="cu.lcnicolau.ui.products.ItemDetailFragment"
android:label="@string/title_product_detail"
tools:layout="@layout/item_detail">
<argument
android:name="item"
app:argType="cu.lcnicolau.dummy.Product" />
</fragment>
</navigation>