java - 在不知道类类型的情况下调用对象的方法

标签 java android fragment

我在我的 Android 应用程序中使用 Fragment。目前我有 2 个 fragment 以 Split View样式显示,我们称之为 fragment A 和 fragment B。 fragment B 经常更改,并且可以更改为许多不同类型的 fragment 。

我希望在 Fragment B 上调用一个方法。此方法存在于大多数但不是所有可以显示的 Fragment 类型中。

这是我的:

FragmentManager fm = getSupportFragmentManager();
Fragment frag = fm.findFragmentByTag("ContentFrag");
if (frag != null) {
    if (frag.getClass().equals(ExampleFragment1.class))
        ((ExampleFragment1)frag).refresh();
    else if (frag.getClass().equals(ExampleFragment2.class))
        ((ExampleFragment2)frag).refresh();
    else if (frag.getClass().equals(ExampleFragment3.class))
        ((ExampleFragment3)frag).refresh();
}

这是我想要的:

FragmentManager fm = getSupportFragmentManager();
Fragment frag = fm.findFragmentByTag("ContentFrag");
if (frag != null) {
    frag.refresh();
}

有什么方法可以实现这一点,还是我必须编写一大堆 if 语句?

谢谢

最佳答案

你可以让你的Fragment实现一个Refreshable接口(interface),你可以检查它。

if(frag instanceof Refreshable)
    ((Refreshable)frag).refresh();
}

这不是很漂亮,但比上面的代码更漂亮。

关于java - 在不知道类类型的情况下调用对象的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16813207/

相关文章:

安卓 : Load image from specific directory

java - firebase recyclerview 上的 "No such Method error"

android - SupportFragmentManager 的 findFragmentById 始终返回 null

java - 在 Java 中,float(具有 4 字节内存)可以保存 long(具有 8 字节内存)值。如何?

android - 如何防止 Prismatic Joint 重置为初始交易限额?

java - 如何使用 Google Compute Engine Java 客户端创建 SSD 磁盘

android - 我的工具栏覆盖我的 map

单实例Activity的Android Fragment生命周期

java - 如何在 JavaFX 中设置选项卡名称大小

java - 使用 ifPresent 在 JAVA 8 中检查 NULL 安全对象