Android NavigationUI startDestination类(非ID)以编程方式
我需要根据条件以编程方式设置导航图的开始目标我有碎片0,还有碎片1,碎片2。。。FragmentN所有扩展Fragment0的部分,并且所有这些部分(包括Fragment0)都能够成为所希望的开始目标 我已经知道NavGraph中有一种叫做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文件中只有一个片段节点,并且能够以编程方式设置类
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)允许您指示将显示的与目标关联的片段类