Android Fragments 片段导航和菜单,如何删除最新的片段?查看描述

uubf1zoe  于 2022-11-24  发布在  Android
关注(0)|答案(1)|浏览(184)

我无法为以下内容找到答案:
假设我们在主Activity中示例化了一个菜单和一个导航图,我们有3个片段:Home、ItemList和Settings。我们添加了另一个名为HourPreference的片段。取下一个流:我按下底部菜单上的设置项,它会带我进入设置片段。然后我们按下一个按钮,使用findNavController().navigate(SettingsFragmentDirections.actionNavigationNotificationsToNavigationHourPreference())将我们带到小时首选片段。我们在小时首选片段。如果我们按下返回,它会带我们进入设置片段。但如果我们按下底部菜单上的主页项,然后它会带我们到那个片段上,当我们按下底部菜单上的设置项时,它会指引我们到HourPreferenceFragment而不是SettingsFragment。代码片段如下所示。当我们按照这个流程进行时,我们如何才能到达SettingsFragment呢?我很感激你的任何回答,无论你是否提供给我另一个帖子的链接,我只是在几个小时后找不到任何东西
简要地说:
行为是:按设置图标(显示设置片段)-〉按小时首选项(显示小时首选项片段)-〉按主页图标(显示主页片段)-〉按设置图标,它带我到小时首选项片段,但我希望它带我到设置片段!
(创建时的主活动):

val navView: BottomNavigationView = binding.navView

    navController = findNavController(R.id.nav_host_fragment_activity_main)
    val appBarConfiguration = AppBarConfiguration(
        setOf(
            R.id.navigation_home,
            R.id.navigation_items_list,
            R.id.navigation_settings
        )
    )

    setupActionBarWithNavController(navController, appBarConfiguration)
    navView.setupWithNavController(navController)

//还

override fun onSupportNavigateUp(): Boolean {
          return navController.navigateUp() || super.onSupportNavigateUp()
}

(活动_主要. xml)

<com.google.android.material.bottomnavigation.BottomNavigationView
    android:id="@+id/nav_view"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_marginStart="0dp"
    android:layout_marginEnd="0dp"
    android:background="@color/grey"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:menu="@menu/bottom_nav_menu" />

<fragment
    android:id="@+id/nav_host_fragment_activity_main"
    android:name="androidx.navigation.fragment.NavHostFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginBottom="64dp"
    app:defaultNavHost="true"
    app:layout_constraintBottom_toTopOf="@id/nav_view"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:navGraph="@navigation/mobile_navigation" />

此外,在mobile_navigation. xml图形中:

<fragment
    android:id="@+id/navigation_settings"
    android:name="com.example.xpiry1.ui.settings.SettingsFragment"
    android:label="@string/title_settings"
    tools:layout="@layout/fragment_settings" >

    <action
                android:id="@+id/action_navigation_notifications_to_navigation_hour_preference"
        app:destination="@id/navigation_hour_preference"
        app:enterAnim="@anim/nav_default_enter_anim"
        app:popUpTo="@id/navigation_settings" />
    </fragment>

    <fragment
    android:id="@+id/navigation_hour_preference"
    android:name="com.example.xpiry1.ui.settings.preferences.HourPreferenceFragment"
    android:label="Hour Preferences"
    tools:layout="@layout/fragment_hour_preference">
    </fragment>

(设置片段)

binding.hourPreference.root.setOnClickListener {
            findNavController().navigate(SettingsFragmentDirections.actionNavigationNotificationsToNavigationHourPreference())
yhxst69z

yhxst69z1#

找到了这个问题的核心问题,详细的解释就在这个answer里面。
目前,通过将片段依赖项从'androidx.navigation:navigation-fragment-ktx:2.4.1'降级为**'androidx.navigation:navigation-fragment-ktx:2.3.5'**,解决了这个问题,现在一切正常。

相关问题