Android NavigationUI startDestination类(不是ID)以编程方式

问题描述 投票:0回答:1

我需要根据情况以编程方式设置导航图的开始目标我有Fragment0,还有Fragment1,Fragment2,... FragmentN都扩展了Fragment0,并且所有这些(包括Fragment0)都可以成为希望的起始目的地

我已经知道NavGraph中的方法叫做

setStartDestination(R.id.nav_fragment_X);

但是对我没有用,因为如果我没有记错的话,它需要在xml导航文件中声明所有这些fragment0 ... N节点。

所以,我想在xml文件中只有一个片段节点,并能够以编程方式设置Class(在我的情况下为片段),在正常情况下,您可以通过设计来指示android studio的/ text标签,并且显示如下:

    android:name="com.android.fragments.FragmentX"
android android-fragments android-navigation android-architecture-navigation android-navigation-graph
1个回答
0
投票

我终于得到答案了:

首先,您可以通过执行以下操作来获取startDestination图:

NavDestination startDestNode = navGraph.findNode(R.id.start_dest);

然后,您可以通过使用以下内容来更新类名:

((FragmentNavigator.Destination) startDestNode).setClassName("Class name you wish");

最后,类FragmentNavigator.Destination的方法setClassName(String className)]允许您指示将与目标关联显示的片段类。

© www.soinside.com 2019 - 2024. All rights reserved.