Вопрос не совсем понятен, но похоже, что вы пытаетесь добиться фрагментарной навигации с помощью NavController. Прежде чем ответить на вопрос, позвольте мне дать вам краткое представление о том, как работает новая навигационная система Jetpack.
В вашем приложении будет одно действие (также может быть несколько действий, но для объясненияЯ придерживаюсь одного)В этом конкретном упражнении у вас есть один NavigationHostFragment
, который отвечает за всю навигацию вашего приложения. Это NavigationHostFragment
будет эквивалентно контейнеру для добавления фрагментов старым способом. NavigationHostFragment
будет иметь навигационный контроллер, который будет связан с раскадровкой. Файл navigation.xml
, который вы указали в вопросе, является вашей раскадровкой.
Раскадровка будет содержать все фрагменты, которые вам нужны в навигации и в направлениях навигации. Указания по навигации называются действиями. Каждое действие во фрагменте будет переходом к отдельному фрагменту.
Следовательно, навигация не имеет никакого отношения к Activity, все это происходит в NavigationHostFragment
(что, я надеюсь, уже имеется в вашемXml-файл упражнения).
С этими основами, с двумя фрагментами, в которых FragmentA
перемещается к FragmentB
, ваш xml-файл навигации будет выглядеть примерно так:
<fragment android:id="@+id/fragmentA" android:name="com.xxx.xxx.FragmentA"
android:label="fragment_a" tools:layout="@layout/fragment_a">
<action android:id="@+id/action_fragmentA_to_fragmentB"
app:destination="@id/fragmentB"/>
</fragment>
<fragment android:id="@+id/fragmentB"
android:name="com.xxx.xxx.FragmentB"
android:label="fragment_b" tools:layout="@layout/fragment_b">
</fragment>
А затем в FragmentA
коде, где вам нужно выполнить навигацию, просто позвоните:
findNavController().navigate(R.id.action_fragmentA_to_fragmentB)