java - 将 fragment 作为参数传递?

标签 java android generics android-fragments

我有一个简单的方法,我想将 fragment 名称作为参数传递。 我有一些像

这样的 fragment

1) 添加新日期 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/

相关文章:

java - 如何解决 Swing GUI 错误?

java - 即使在 persistence.xml 中指定,JPA 2.1 也不会从 .sql 文件插入行

java - 从 eclipse 运行时,Maven 不会在项目目录中查找 web.xml

java - sqlite 数据库返回空对象引用

android - Android 应用程序上的谷歌地图无法正常工作

java - 创建字符串到接口(interface)的映射,其中接口(interface)/函数参数和返回类型不同

java - 将 GUI 添加到我的应用程序

android - 如何从我的 GPS 坐标中获取附近的位置?

Java:如何使用遵循(通用)可扩展枚举类型模式的字段创建不可变值对象

c# - 如何将 C# 8 中的默认返回值标记为仅对类可为空?