【问题标题】:Android NavigationUI startDestination class (not ID) programmaticallyAndroid NavigationUI startDestination 类(不是 ID)以编程方式
【发布时间】:2019-12-27 12:20:18
【问题描述】:

我需要根据条件以编程方式设置导航图的起始目的地我有 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"

【问题讨论】:

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


    【解决方案1】:

    我终于得到了答案:

    首先你得到你的 startDestination 图,例如,执行:

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

    然后,您可以通过以下方式更新类名:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-12
      • 2015-07-05
      • 1970-01-01
      • 2012-07-17
      相关资源
      最近更新 更多