我需要根据情况以编程方式设置导航图的开始目标。 我有Fragment0,还有Fragment1,Fragment2,... FragmentN都扩展了Fragment0,并且所有人(包括Fragment0)都可以成为希望的起始目的地。
我已经知道NavGraph中的方法
setStartDestination(R.id.nav_fragment_X);
但这对我没有用,因为如果我没有记错的话,它需要在xml导航文件中声明所有这些 fragment0 ... N 节点。
所以,我想在xml文件中只有一个片段节点,并能够以编程方式设置Class(在我的情况下为片段),在正常情况下,您可以通过android studio的设计/文本标签,并显示如下:
android:name="com.android.fragments.FragmentX"
答案 0 :(得分:0)
我最终得到了答案:
首先,您可以通过执行以下操作来获取startDestination图:
NavDestination startDestNode = navGraph.findNode(R.id.start_dest);
然后,您可以通过使用以下内容来更新类名:
((FragmentNavigator.Destination) startDestNode).setClassName("Class name you wish");
最后,类 FragmentNavigator.Destination 的方法 setClassName(String className)使您可以指示将与目标关联显示的片段类。 / p>