如何从另一个片段调用片段上的方法?
我试过了:
Fragment fragmentName = (fragmentName) getFragmentManager().findFragmentByTag("fragmentTag");
fragmentName.method();
但它是一个空指针。
非常感谢你。
答案 0 :(得分:0)
您不应该直接在片段之间进行通信(可能包含子片段除外)。相反,请将您的活动用作调解员。
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);
}
}
}
答案 1 :(得分:0)
虽然你实际上可以使用这样的代码,但这可能不是一个好习惯,因为你在两个片段之间创建了依赖关系。
空指针的发生可能是因为当代码运行时,其他片段仍未初始化。您可以使用一些活动或片段生命周期方法(如onAttach)仅在目标初始化后运行代码。