0

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

我已经知道有来自 NavGraph 的方法称为

setStartDestination(R.id.nav_fragment_X);

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

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

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

1 回答 1

1

我终于得到了答案:

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

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

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

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

总之,FragmentNavigator.Destination类的方法setClassName(String className)允许您指示将与目的地关联显示的片段类。

于 2020-01-09T09:16:58.470 回答