我正在开发一个应用程序,其中使用 FragmentActivity
实现选项卡。由于在整个应用程序中都需要选项卡,因此广泛使用片段来使应用程序与所有 Android 版本兼容。
因此,我面临的问题是难以直观地查看后台堆栈中存在哪些片段。我相信有一种方法可以检索出存在于后台堆栈中的片段列表。谢谢。
我正在开发一个应用程序,其中使用 FragmentActivity
实现选项卡。由于在整个应用程序中都需要选项卡,因此广泛使用片段来使应用程序与所有 Android 版本兼容。
因此,我面临的问题是难以直观地查看后台堆栈中存在哪些片段。我相信有一种方法可以检索出存在于后台堆栈中的片段列表。谢谢。
FragmentManager有以下方法:
getBackStackEntryCount()
getBackStackEntryAt(int index)
FragmentManager fm = getFragmentManager();
for(int entry = 0; entry<fm.getBackStackEntryCount(); entry++){
Log.i(TAG, "Found fragment: " + fm.getBackStackEntryAt(entry).getId());
}
findNavController().backQueue.forEach {
Log.d(TAG, "${it.destination}")
}
getSupportFragmentManager().addOnBackStackChangedListener(new OnBackStackChangedListener() {
@Override
public void onBackStackChanged() {
Fragment f = getSupportFragmentManager().findFragmentById(R.id.content_frame);
if (f != null){
updateActionBarTitle(f);
}
}
});
private void updateActionBarTitle(Fragment fragment) {
String fragClassName = fragment.getClass().getName();
if (fragClassName.equals(FirstFragment.class.getName())) {
setTitle("Home");
} else if (fragClassName.equals(SecondFragment.class.getName())) {
setTitle("Second");
}
}
这将在返回堆栈更改侦听器上更新您的操作栏标题。
findFragmentById()
并使用这些id,你将无法找到一个片段。 - Bevor