android Navigation Drawer
Есть стандартная разметка Navigation Drawer
<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/mobile_navigation"
app:startDestination="@+id/nav_tools">
<fragment
android:id="@+id/nav_home"
android:name="com.example.test.ui.home.HomeFragment"
android:label="@string/Activity"
tools:layout="@layout/fragment_home" />
<fragment
android:id="@+id/nav_section1"
android:name="com.example.test.ui.send.SendFragment"
android:label="@string/section1"
tools:layout="@layout/test" />
<fragment
android:id="@+id/nav_gallery"
android:name="com.example.test.ui.gallery.GalleryFragment"
android:label="@string/section2"
tools:layout="@layout/test" />
<fragment
android:id="@+id/nav_tools"
android:name="com.example.test.ui.tools.ToolsFragment"
android:label="@string/setting"
tools:layout="@layout/fragment_tools" />
</navigation>
Не могу понять, как управлять вот этим пунктом из кода
app:startDestination="@+id/nav_tools"
Хочу чтобы при опеределенных условиях, при запуске стартовый фрагмент изменился. Подскажите саму команду, как изменять её. Спасибо.
Ответы (2 шт):
Автор решения: Сергей Бувака
→ Ссылка
Вызовите этот код в onCreate вашей Activity
val navHostFragment = home_nav_fragment as NavHostFragment
val inflater = navHostFragment.navController.navInflater
val graph = inflater.inflate(R.navigation.nav_main)
graph.setDefaultArguments(intent.extras)
graph.startDestination = R.id.fragment1
//or
//graph.startDestination = R.id.fragment2
navHostFragment.navController.graph = graph
Автор решения: Таксист Молодой
→ Ссылка
Если кому то пригодится, код на Java
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
NavHostFragment navHost = (NavHostFragment)
getSupportFragmentManager().findFragmentById(R.id.nav_host_fragment);
navController = navHost.getNavController();
NavInflater navInflater = navController.getNavInflater();
NavGraph graph = navInflater.inflate(R.navigation.mobile_navigation);
graph.setStartDestination(activityToResume);
//graph.setStartDestination(R.id.nav_gallery);
navController.setGraph(graph);