【发布时间】:2014-01-07 12:16:49
【问题描述】:
这里有一个棘手的问题,但我会尽量弄清楚。
A 类:extends FragmentActivity 并拥有FragmentManager
B 类:extends Fragment 并具有片段的 UI
C 类:无关类
public class A extends FragmentActivity{
Fragment fragment = new FragmentActivity();
}
public class B extends Fragment{
public void methodToBeCalled(){
//do something
}
}
public class C{
//call B's methodToBeCalled() from here
//note it is not static
}
我想做的是从 C 类调用位于 B 类中的方法。有什么想法可以做到这一点吗?
一种解决方案是从 C 类运行此代码:
B fragment = (B) getFragmentManager().findFragmentById(R.id.b);
这不起作用(它可以编译,但 if 语句总是错误的):
if (A.getCurrentFragment() instanceof B) {
B fragment = (B) A.getCurrentFragment();
fragment.methodToBeCalled();
}
【问题讨论】:
-
你能发一个SSCCE来清楚地说明你的问题吗?
-
当然让我为你把它放在一起
-
调用方法应该不是问题。您是否想知道如何获取当前显示的 Fragment 实例?
-
是的。我相信这可能是我的问题。 (对不起,我是片段的新手。)如果我可以从不相关的类中访问当前显示的片段,那将解决我的问题。我更新了代码。这就是你的意思戴夫?
标签: java android-fragments fragment android-fragmentactivity fragmentmanager