无法移动到嵌套子导航组件中的父片段?

rxztt3cl  于 2021-09-13  发布在  Java
关注(0)|答案(0)|浏览(224)

我在我的应用程序中使用的导航组件具有单一活动和多个片段的模式,我让一些片段占据整个设备屏幕,其他片段与底部导航组件共享,为了实现这一点,我在我的主要活动中使用了片段容器视图,对于有导航片段的主屏幕片段,我使用了根HomeFragment,它有另一个底部的片段容器视图导航视图。这里是完整的应用程序导航图
(nav_main)-->main活动具有视图(main_片段)-->(splashfragment-loginfragment=roothomefragment)
(导航主页)-->roothomefragment具有视图(主页片段/底部导航视图)-->(主页片段-设置片段)
问题是在settingfragment中,有一个注销操作将我重定向到登录屏幕,但我无法执行此操作,我尝试使用settingfragment中的下一个代码执行此操作,但应用程序移动到homefragment,这是nav_home的默认主目标

Navigation.findNavController(requireActivity(),R.id.fragment_main)
                    .navigate(R.id.actionGoToLoginFromHome)

这是我的导航主目录的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中观察它时,工作的解决方案总是将我重定向到homefragment,并尝试从那里移动到loginfragment,它也会移动roothomeframgnet默认目标homefragment?有什么解决办法吗?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题