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

时间:2019-12-27 12:20:18

标签: android android-fragments android-navigation android-architecture-navigation android-navigation-graph

我需要根据情况以编程方式设置导航图的开始目标我有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"

1 个答案:

答案 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>