使用导航组件时如何知道堆栈中的片段数?
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。
我在我的应用程序中使用导航组件。从第一个片段到最后一个片段还有其他片段,例如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。