NavHostFragment的容器消失后,后堆栈为空

时间:2019-05-10 10:22:09

标签: android android-fragments navigation back-stack

我的应用程序只有一个活动MainActivity。这是xml文件:

    <FrameLayout 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:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="vertical"
  tools:context=".MainActivity">

  <FrameLayout
    android:id="@+id/main_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:visibility="gone">

    <fragment
      android:id="@+id/nav_host_fragment"
      android:name="androidx.navigation.fragment.NavHostFragment"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      app:defaultNavHost="true"
      app:navGraph="@navigation/lovable_app_navigation" />

  </FrameLayout>


  <fragment
    android:id="@+id/login_fragment"
    android:name="LoginFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />
</FrameLayout>

我使用导航组件,而LoginFragment在导航图之外。当用户在应用程序中的某个位置并且会话到期时,我需要在navFragment上显示loginFragment。我使我的loginFramgnent可见并且mainContainer消失了。在这一刻,如果用户按下,我需要将他发送到之前的片段。在活动中的onBackPressed方法上,我需要知道后堆栈中是否有片段。我尝试了host.childFragmentManager.backStackEntryCountsupportFragmentManager?.primaryNavigationFragment?.childFragmentManager?.backStackEntryCount,它们每个都返回0。

为什么会这样?我怎么知道登录之前堆栈中有碎片?

0 个答案:

没有答案