【问题标题】:Problem to navigate between fragments in Navbar在导航栏中的片段之间导航的问题
【发布时间】:2022-12-11 17:34:29
【问题描述】:

我在 Navbar 中的片段之间导航有问题。 这是我的情况: 我有 3 个主要片段:,列表,设置 有 2 个子片段:添加和编辑 因此,如果我使用导航栏在 3 个主要片段之间导航一切正常,那么如果我进入 2 个“子片段”之一,然后(而不是之前“向上导航”然后更改主片段)我直接选择另一个2“主要”我会去那里,但如果我回到列表,我会看到子片段。 我必须向上导航才能再次看到列表. **我想要的是**如果我在其中一个“潜艇”(的儿子)内切换主片段列表),然后我再次选择列表,我想查看列表而不是我留下的子项。

我的代码:

导航


<fragment
    android:id="@+id/homeFragment"
    android:name="com.somi.fidelitycardconnect.ui.home.HomeFragment"
    android:label="Home"
    tools:layout="@layout/fragment_home" />

<fragment
    android:id="@+id/settingsFragment"
    android:name="com.somi.fidelitycardconnect.ui.settings.SettingsFragment"
    android:label="Impostazioni"
    tools:layout="@layout/fragment_settings" />

<fragment
    android:id="@+id/listFragment"
    android:name="com.somi.fidelitycardconnect.ui.list.ListFragment"
    android:label="Lista clienti"
    tools:layout="@layout/fragment_list">
    <action
        android:id="@+id/action_listFragment_to_addFormFragment"
        app:destination="@id/addFormFragment" />

    <action
        android:id="@+id/action_listFragment_to_editFormFragment"
        app:destination="@id/editFormFragment" />

</fragment>

<fragment
    android:id="@+id/addFormFragment"
    android:name="com.somi.fidelitycardconnect.ui.form.AddFormFragment"
    android:label="Aggiungi cliente"
    tools:layout="@layout/fragment_add_form">
</fragment>

<fragment
    android:id="@+id/editFormFragment"
    android:name="com.somi.fidelitycardconnect.ui.form.EditFormFragment"
    android:label="Informazioni cliente"
    tools:layout="@layout/fragment_edit_form">
</fragment>

主要活动:

binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)

        val navView: BottomNavigationView = binding.navView

        val navController = findNavController(R.id.nav_host_fragment_activity_main)
        // Passing each menu ID as a set of Ids because each
        // menu should be considered as top level destinations.
        appBarConfiguration = AppBarConfiguration(
            setOf(
                R.id.homeFragment,
                R.id.listFragment,
                R.id.settingsFragment
            )
        )
        setupActionBarWithNavController(navController, appBarConfiguration)
        navView.setupWithNavController(navController)
    }

    override fun onSupportNavigateUp(): Boolean {
        val navController = findNavController(R.id.nav_host_fragment_activity_main)
        return navController.navigateUp(appBarConfiguration)
                || super.onSupportNavigateUp()
    }
}

enter image description here enter image description here

**我想要的是**如果我在其中一个“潜艇”(的儿子)内切换主片段列表),然后我再次选择列表,我想查看列表而不是我留下的子项。

【问题讨论】:

    标签: android kotlin android-navigation-graph


    【解决方案1】:

    如果要按bottomNav 项目之一并从默认位置开始,则需要弹出其他目的地。使用下面的代码来实现它:

            navView.setupWithNavController(navController)
    
            navView.setOnItemSelectedListener { item ->
                NavigationUI.onNavDestinationSelected(item, navController)
                navController.popBackStack(item.itemId, inclusive = false)
                true
            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-06
      • 1970-01-01
      • 2021-02-22
      相关资源
      最近更新 更多