使用导航组件时如何知道堆栈中的片段数?

How to know the number of fragment that are in stack when using Navigation Component?

我在我的应用程序中使用导航组件。从第一个片段到最后一个片段还有其他片段,例如nice。每次用户单击片段时,都会将其添加到堆栈中。我怎么知道在一个时间点已经有多少片段被添加到堆栈中?

您可以在 Activity 中使用以下方法获取当前的 backstackentry 计数,其中 home_nav_host_fragment 是容器的 ID NavHostFragment 在 activity 中。

public int getStackCount(){
NavHostFragment navHostFragment = (NavHostFragment) getSupportFragmentManager().findFragmentById(R.id.home_nav_host_fragment);
int backStackEntryCount = navHostFragment.getChildFragmentManager().getBackStackEntryCount();
return backStackEntryCount;
}

要从片段中调用此方法,您可以使用
int count = ((YourActivity)getActivity()).getStackCount();

从你的Activity,试试这个:

supportFragmentManager.primaryNavigationFragment?.childFragmentManager?.backStackEntryCount

如果您尝试从 Base Activity 获取计数,这将特别有用,因为不同的子活动可能具有具有不同 ID 的 NavHostFragment。