当前位置: 首页 > 知识库问答 >
问题:

如何根据该值以编程方式添加startDestination?

呼延烈
2023-03-14

如何根据值以编程方式添加起始目标?例如,如果整数变量为0,则我希望启动导航\u main\u countries\u fragment,否则启动导航\u main\u categories\u fragment。

内部activity\u main

<androidx.fragment.app.FragmentContainerView
    android:id="@+id/activity_main_container"
    android:name="androidx.navigation.fragment.NavHostFragment"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    app:navGraph="@navigation/navigation_main" //I deleted this line already
    android:layout_weight="1" />

内部导航主

<?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    app:startDestination="@id/navigation_main_countries_fragment" //I deleted this line already
    tools:ignore="InvalidNavigation">

    <fragment
        android:id="@+id/navigation_main_countries_fragment"
        android:name="com.test.app.fragments.CountriesFragment"
        tools:layout="@layout/fragment_countries" />

    <fragment
        android:id="@+id/navigation_main_categories_fragment"
        android:name="com.test.app.fragments.CategoriesFragment"
        tools:layout="@layout/fragment_categories" />

</navigation>

共有2个答案

袁翰池
2023-03-14

您可以使用以下代码作为起点和终点

val navHostFragment = (supportFragmentManager.findFragmentById(R.id.home_nav_fragment) as NavHostFragment)
val inflater = navHostFragment.navController.navInflater
val graph = inflater.inflate(R.navigation.nav_main)
graph.startDestination = R.id.fragment1

navHostFragment.navController.graph = graph
尉迟华翰
2023-03-14

尝试此代码

// Configure the navigation
val navHost = nav_host_fragment as NavHostFragment
graph = navHost.navController.navInflater.inflate(R.navigation.nav_graph)
if(value == 0)
graph.startDestination = R.id.counriesFragment
else
grapgh.startDestination = R.id.categoryFragment


navHost.navController.graph = graph

NavigationUI.setupActionBarWithNavController(this, navHost.navController)
 类似资料:
  • 我正在使用SpringDoc,并试图以编程方式向OpenApi添加一个模式,但没有成功。 mySchema的描述没有添加到我在生成的YAML文件中看到的模式列表中,如果我试图引用它:

  • 我正在尝试在Android上添加Wifi网络,我想知道如何连接到不广播其SSID的Wifi网络(它是否有空SSID或带有\0s的清晰SSID)。 这是我目前用于广播其SSID的Wifi网络的内容:

  • 问题内容: 尽管我看过很多类似的问题,但没有找到明确的答案。使用Servlet Spec 2.5,是否可以以编程方式添加Servlet过滤器和映射?首选位置在Servlet.init()或ServletContextListener.contextInitialized()中。 问题答案: 不,不是通过标准的Servlet 2.5 API。这是在Servlet 3.0 中引入的。最好的选择是创建一

  • AndroidR、 属性。selectableItemBackground存在,但如何通过编程将其添加到ImageButton? 此外,我如何在文档中找到答案?这里提到过,但我看不到任何关于它实际如何使用的解释。实际上,我似乎很少发现文档有用,但我希望这是我的错,而不是文档的错。

  • 在新的 AppCompat 库中,我们可以按以下方式对按钮进行着色: 如何在代码中以编程方式设置按钮的色调?我基本上尝试根据一些用户输入实现按钮的条件着色。

  • Spring非常出色地为注释提供了一个属性。我希望以编程方式提供带有时区的方法。 例如,假设我想在当地时间午夜打开洛杉矶和芝加哥大楼的灯。我想从我的存储库中获取建筑物。 时区可以在运行时提供还是以其他方式注入? 比如: 我知道方法不能接受任何参数,所以以这种方式提供时区是不行的。