无法从片段对象访问公共方法

时间:2015-05-28 03:20:37

标签: java android android-fragments fragment

我使用Streets Of Boston's answer here

保存了片段对象

并拉出一个片段

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

但是我无法从片段对象访问公共方法 片段。


这个方法是一个片段

 public void dowork()
 {
     //WORK!
 }

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

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

如何进入?
感谢。

2 个答案:

答案 0 :(得分:5)

如果您尝试在示例中实例化的片段上调用这些方法,则需要将片段转换为您的类。因此,如果您的片段属于MyFragment类,则需要执行

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

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

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

是正确的
 MyFragment.dowork2();

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

答案 1 :(得分:3)

您必须将该片段转换为片段的子类。 你无法访问这些方法的原因是因为它们不在片段中。它们在你的Fragment类的实现中。