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

Android NavigationUI startDestination类(非ID)以编程方式,android,android-fragments,android-navigation,android-architecture-navigation,android-navigation-graph,Android,Android Fragments,Android Navigation,Android Architecture Navigation,Android Navigation Graph,我需要根据条件以编程方式设置导航图的开始目标我有碎片0,还有碎片1,碎片2。。。FragmentN所有扩展Fragment0的部分,并且所有这些部分(包括Fragment0)都能够成为所希望的开始目标 我已经知道NavGraph中有一种叫做 setStartDestination(R.id.nav_fragment_X); 但它对我来说没有用处,因为如果我没有错的话,它需要在xml导航文件中声明所有这些零碎的0…N节点 因此,我想要的是,在xml文件中只有一个片段节点,并且能够以编程方式设置类

我需要根据条件以编程方式设置导航图的开始目标我有碎片0,还有碎片1,碎片2。。。FragmentN所有扩展Fragment0的部分,并且所有这些部分(包括Fragment0)都能够成为所希望的开始目标

我已经知道NavGraph中有一种叫做

setStartDestination(R.id.nav_fragment_X);
但它对我来说没有用处,因为如果我没有错的话,它需要在xml导航文件中声明所有这些零碎的0…N节点

因此,我想要的是,在xml文件中只有一个片段节点,并且能够以编程方式设置类(在我的例子中是片段),在正常情况下,您可以通过android studio的设计/文本选项卡指示该类,并显示如下:

    android:name="com.android.fragments.FragmentX"

我最终得到了答案:

首先,您通过执行以下步骤获得startDestination图:

NavDestination startDestNode = navGraph.findNode(R.id.start_dest);
稍后,您将通过使用以下命令更新类名:

((FragmentNavigator.Destination) startDestNode).setClassName("Class name you wish");
总之,类FragmentNavigator.Destination的方法setClassName(String className)允许您指示将显示的与目标关联的片段类