我在我的 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/