Android NavigationUI startDestination class(不是 ID)以编程方式
Android NavigationUI startDestination class (not ID) programmatically
-
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 工作室的 design/text 选项卡进行指示,并显示如下:
android:name="com.android.fragments.FragmentX"
终于找到答案了:
首先你得到你的 startDestination 图,例如,执行:
NavDestination startDestNode = navGraph.findNode(R.id.start_dest);
稍后,您通过使用以下命令更新 class 名称:
((FragmentNavigator.Destination) startDestNode).setClassName("Class name you wish");
综上所述,setClassName(String className) 方法 class FragmentNavigator.Destination 允许您指示将显示的与目的地关联的片段 class。
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 工作室的 design/text 选项卡进行指示,并显示如下:
android:name="com.android.fragments.FragmentX"
终于找到答案了:
首先你得到你的 startDestination 图,例如,执行:
NavDestination startDestNode = navGraph.findNode(R.id.start_dest);
稍后,您通过使用以下命令更新 class 名称:
((FragmentNavigator.Destination) startDestNode).setClassName("Class name you wish");
综上所述,setClassName(String className) 方法 class FragmentNavigator.Destination 允许您指示将显示的与目的地关联的片段 class。