我有一个简单的方法,我想将 fragment 名称作为参数传递。 我有一些像
这样的 fragment1) 添加新日期 fragment
2) AskFragment
3) 免责声明 fragment
我有以下代码,可以按预期正常工作
FragmentManager fragmentManager = activity.getSupportFragmentManager();
for (int entry = 0; entry < fragmentManager.getBackStackEntryCount(); entry++) {
Fragment fragment = (Fragment) fragmentManager.getBackStackEntryAt(entry);
if (fragment instanceof AddNewDatesFragment) {
Log.i("TAG", " Expected Fragment Found");
}
}
我想在方法中编写一些代码,我可以在其中调用这样的方法
isExistFragment(AddNewDatesFragment);
isExistFragment(AskFragment);
isExistFragment(DisclaimerFragment);
等等...
我已经尝试过这样的代码,但在 if 条件下不起作用,会出现编译时错误。
private boolean isExistFragment(Class<Fragment> expectedFragment) {
FragmentManager fragmentManager = activity.getSupportFragmentManager();
for (int entry = 0; entry < fragmentManager.getBackStackEntryCount(); entry++) {
Fragment fragment = (Fragment) fragmentManager.getBackStackEntryAt(entry);
if (fragment instanceof expectedFragment) {
Log.i("TAG", " Expected Fragment Found");
return true;
}
}
return false;
}
我很好奇实现这样的方法。 谢谢,
最佳答案
getBackStackEntryAt(index)
不返回 Fragment 本身,它返回相关 Fragment 的 BackStackEntry 对象。
请看一下http://developer.android.com/reference/android/app/FragmentManager.html#getBackStackEntryAt(int)
使用下面的代码 fragment 从堆栈中检索 Fragment:
Fragment fragment = (Fragment) fragmentManager
.findFragmentById(fragmentManager.getBackStackEntryAt(entry)
.getId());
在这里,首先您获得受尊重的Fragement的BackStackEntry,通过它您将获得特定位置的 fragment 的 fragment ID。 然后通过id你可以轻松检索Fragment。
关于java - 将 fragment 作为参数传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27742622/