gpt4 book ai didi

android - 无法移动到嵌套子导航组件中的父 fragment ?

转载 作者:行者123 更新时间:2023-12-04 11:43:37 35 4
gpt4 key购买 nike

我在我的应用程序中使用具有单个 Activity 和多个 fragment 的模式的导航组件,我有一些 fragment 占据了整个设备屏幕,而其他 fragment 与底部导航组件共享它,并通过单个 Activity 来实现这一点,我使用了 fragment 容器 View 在我的主要 Activity 和具有导航 fragment 的主屏幕 fragment 中,我使用了 RootHomeFragment,它具有另一个带有底部导航 View 的 fragment 容器 View 。
这里是完整的应用程序导航图
(nav_main)
-->MainActivity 有 View (main_fragment)--> (SplashFragment - LoginFragment = RootHomeFragment)
(nav_home) --> RootHomeFragment 有 View (home_fragment/底部导航 View ) --> (HomeFragment - SettingFragment)
问题出在 settingFragment 中,有一个注销操作将我重定向到登录屏幕,但我无法执行此操作,我尝试使用 SettingFragment 中的下一个代码执行此操作,但应用程序移至 HomeFragment,这是默认的主页目的地nav_home 的

   Navigation.findNavController(requireActivity(),R.id.fragment_main)
.navigate(R.id.actionGoToLoginFromHome)
这是我的 nav_main 的 xml
<?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/nav_main"
app:startDestination="@id/splashFragment">

<action android:id="@+id/action_global_login"
app:destination="@id/loginFragment"/>

<fragment
android:id="@+id/rootHomeFragment"
android:name="package.main.RootHomeFragment"
android:label="fragment_root_home"
tools:layout="@layout/fragment_root_home">
<action
android:id="@+id/actionGoToLoginFromHome"
app:destination="@id/loginFragment"
/>

</fragment>

<fragment
android:id="@+id/splashFragment"
android:name="package.splash.SplashFragment"
android:label="fragment_splash"
tools:layout="@layout/fragment_splash">
<action
android:id="@+id/actionGoToRootHome"
app:destination="@id/rootHomeFragment"
app:launchSingleTop="true"
app:popUpTo="@id/splashFragment"
app:popUpToInclusive="true" />
<action
android:id="@+id/actionGoToLogin"
app:destination="@id/loginFragment"
app:launchSingleTop="true"
app:popUpTo="@id/splashFragment"
app:popUpToInclusive="true" />
</fragment>
<fragment
android:id="@+id/loginFragment"
android:name="package.signinup.LoginFragment"
android:label="fragment_login"
tools:layout="@layout/fragment_login">
<action
android:id="@+id/actionGoToRootHomeFromLogin"
app:destination="@id/rootHomeFragment"
app:launchSingleTop="true"
app:popUpTo="@id/splashFragment"
app:popUpToInclusive="true" />
</fragment>
</navigation>
导航主页 xml
<?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/nav_home"
app:startDestination="@id/homeFragment">

<fragment
android:id="@+id/homeFragment"
android:name="package.main.HomeFragment"
android:label="fragment_home"
tools:layout="@layout/fragment_home" />
<fragment
android:id="@+id/ordersFragment"
android:name="package.main.OrdersFragment"
android:label="fragment_orders"
tools:layout="@layout/fragment_orders" />
<fragment
android:id="@+id/settingFragment"
android:name="package.main.SettingFragment"
android:label="fragment_setting"
tools:layout="@layout/fragment_setting" >

</fragment>
</navigation>
我从许多答案中尝试了许多解决方案,即使使用 liveData 并在 RootHomeFragment 中观察它并尝试从那里移动到 LoginFragment 它也会移动 RootHomeFramgnet 默认目标 HomeFragment,工作的解决方案总是将我重定向到 homeFragment?有什么解决办法吗?

最佳答案

这听起来对我来说,你导航到 LoginFragment 然后它立即导航回 HomeFragment。
我们需要看看 LoginFragment/它的 viewModel 中发生了什么。

关于android - 无法移动到嵌套子导航组件中的父 fragment ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68521717/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com