我在我的应用程序中使用导航组件,具有单个活动和多个片段的模式,我有一些片段占据整个设备屏幕,其他片段与底部导航组件共享它,并通过单个活动实现这一点,我使用了片段容器视图在我的主要活动和具有导航片段的主屏幕片段中,我使用了 RootHomeFragment,它具有另一个带有底部导航视图的片段容器视图。这里是完整的应用程序导航图
(nav_main) -->MainActivity 有视图 (main_fragment)--> (SplashFragment - LoginFragment = RootHomeFragment)
(nav_home) --> RootHomeFragment 有视图 (home_fragment / 底部导航视图) --> (HomeFragment - SettingFragment)
问题出在 settingFragment,有一个注销操作将我重定向到登录屏幕,但我无法执行此操作,我尝试使用 SettingFragment 中的下一个代码执行此操作,但应用程序移动到 HomeFragment,这是默认的主目的地nav_home 的
Navigation.findNavController(requireActivity(),R.id.fragment_main)
.navigate(R.id.actionGoToLoginFromHome)
Run Code Online (Sandbox Code Playgroud)
这是我的 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" …Run Code Online (Sandbox Code Playgroud) navigation android android-fragments kotlin android-architecture-navigation
我在帖子中读到 Coroutine 不是在启动屏幕上使用的好习惯,而 Executors 是最好的,因为 Coroutine 比 Executors 需要更多时间来启动,但我没有找到实现它的例子,是 Executors是用于管理线程池的普通java Executor 类吗?