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

3

我使用 《波士顿街道》在这里的答案 保存了片段对象。

然后取出一个片段。

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

但我无法从fragment对象访问公共方法。


该方法位于一个fragment中。

 public void dowork()
 {
     //WORK!
 }

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

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

如何访问?
谢谢。

2个回答

5

如果您试图在实例化的片段上调用这些方法,您需要将片段转换为您的类。因此,如果您的片段是MyFragment类,则需要执行以下操作:

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

然后你就可以调用你在片段类中声明的方法了。

另外,静态方法应该在类上调用,而不是实例上调用,因此正确的做法是

 MyFragment.dowork2();

如果该方法确实是静态的。

3
您需要将该Fragment强制转换为您的Fragment子类。您无法访问这些方法的原因是它们不在fragment中可用,而是在您的Fragment类实现中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接