我的应用程序只有一个活动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.backStackEntryCount
和supportFragmentManager?.primaryNavigationFragment?.childFragmentManager?.backStackEntryCount
,它们每个都返回0。
为什么会这样?我怎么知道登录之前堆栈中有碎片?