[英]Call method on a fragment from another fragment
如何从另一个片段调用一个片段的方法?
我试过了:
Fragment fragmentName = (fragmentName) getFragmentManager().findFragmentByTag("fragmentTag");
fragmentName.method();
但这是一个空指针。
非常感谢。
您不应该在片段之间直接进行通信(可能会出现子片段)。 而是将您的活动用作调解人。
FragmentA {
public void sendMessageToB(String message) {
((MainActivity)getActivity()).sendMessageToB(message);
}
}
FragmentB {
public void receiveMessage(String message) {
}
}
MainActivity {
public void sendMessageToB(String message) {
// or findById if defined in XML (same as with Views)
FragmentB fragment = (FragmentB) getFragmentManager().findFragmentByTag("FragmentB");
if (fragment != null && fragment.isAdded()) {
fragment.receiveMessage(message);
}
}
}
尽管实际上可以使用这样的代码,但这可能不是一个好习惯,因为您正在两个片段之间创建依赖关系。
空指针的出现可能是因为在代码运行时,另一个片段仍未初始化。 您可能仅在初始化目标之后才使用某些活动或片段生命周期方法(如onAttach)来运行代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.