片段导航和菜单。如何删除最新片段?检查说明
Fragment navigation and menu. How to remove latest fragment? Check description
我无法找到以下上下文的答案:
假设我们在主 activity 中有一个菜单和一个导航图实例。我们有 3 个片段:Home、ItemList 和 Settings。我们添加另一个名为 HourPreference 的片段。
采取下一个流程:我按下“设置”项上的底部菜单,这会将我带到 SettingsFragment。然后我们按下一个按钮,使用 findNavController().navigate(SettingsFragmentDirections.actionNavigationNotificationsToNavigationHourPreference())
将我们带到 HourPreferenceFragment。我们在 HourPreferenceFragment 上。如果我们按回键,它会将我们带到 SettingsFragment。但是,如果我们从底部菜单中按下主页项目,那么它将带我们进入该片段,当我们按下设置项目上的底部菜单时,它会将我们定向到 HourPreferenceFragment 而不是 SettingsFragment。下面的代码片段。当我们沿着这个流程前进时,我们如何才能到达 SettingsFragment?无论您是否向我提供 link 给另一个 post 的任何答复,我都非常感谢,我只是在几个小时后找不到任何东西
简述:
行为是:按设置图标(显示 SettingsFragment)-> 按小时偏好(显示 HourPreferenceFragment)-> 按主页图标(显示 HomeFragment)-> 按设置图标,它将我带到 HourPreference 片段,但我想要它带我到 SettingsFragment!
(MainActivity.onCreate):
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()
}
(activity_main.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())
找到了这个问题的核心问题。详细解释在这个.
目前,通过从 'androidx.navigation:navigation-fragment-ktx:2.4.1' 降级片段依赖来解决它
到
'androidx.navigation:navigation-fragment-ktx:2.3.5'
现在一切正常。
我无法找到以下上下文的答案:
假设我们在主 activity 中有一个菜单和一个导航图实例。我们有 3 个片段:Home、ItemList 和 Settings。我们添加另一个名为 HourPreference 的片段。
采取下一个流程:我按下“设置”项上的底部菜单,这会将我带到 SettingsFragment。然后我们按下一个按钮,使用 findNavController().navigate(SettingsFragmentDirections.actionNavigationNotificationsToNavigationHourPreference())
将我们带到 HourPreferenceFragment。我们在 HourPreferenceFragment 上。如果我们按回键,它会将我们带到 SettingsFragment。但是,如果我们从底部菜单中按下主页项目,那么它将带我们进入该片段,当我们按下设置项目上的底部菜单时,它会将我们定向到 HourPreferenceFragment 而不是 SettingsFragment。下面的代码片段。当我们沿着这个流程前进时,我们如何才能到达 SettingsFragment?无论您是否向我提供 link 给另一个 post 的任何答复,我都非常感谢,我只是在几个小时后找不到任何东西
简述:
行为是:按设置图标(显示 SettingsFragment)-> 按小时偏好(显示 HourPreferenceFragment)-> 按主页图标(显示 HomeFragment)-> 按设置图标,它将我带到 HourPreference 片段,但我想要它带我到 SettingsFragment!
(MainActivity.onCreate):
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()
}
(activity_main.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())
找到了这个问题的核心问题。详细解释在这个
目前,通过从 'androidx.navigation:navigation-fragment-ktx:2.4.1' 降级片段依赖来解决它 到 'androidx.navigation:navigation-fragment-ktx:2.3.5' 现在一切正常。