无法从片段对象访问 public 方法

can not access the public methods from fragment object

我使用 Streets Of Boston's answer here

保存了片段对象

并取出了一个片段

 Fragment fragment = myPagerAdapter.getRegisteredFragments(nowPosition);
 if (fragment == null)
 {
     return; 
 }

但我无法从片段对象访问 public 方法 片段。


此方法在片段中

 public void dowork()
 {
     //WORK!
 }

 public static void dowork2()
 {
     //WORK!
 }

fragment.dowork(); -> 找不到工作
fragment.dowork2(); -> 找不到 dowork2

如何访问?
谢谢。

如果您尝试在示例中实例化的片段上调用这些方法,则需要将片段转换为 class。所以如果你的片段是 class MyFragment 你需要做

 MyFragment fragment = (MyFragment) myPagerAdapter.getRegisteredFragments(nowPosition);

然后您将能够调用您在片段中声明的方法 class。

此外,应该在 class 上调用静态方法,而不是在实例上调用,因此

是正确的做法
 MyFragment.dowork2();

如果该方法实际上是静态的。

您必须将该片段投射到片段的子class。 您无法访问这些方法的原因是因为它们在 fragment.They 中不可用,在您的 Fragment class.

实现中