从另一个片段调用片段的方法

时间:2014-06-11 14:48:17

标签: android android-fragments

如何从另一个片段调用片段上的方法?

我试过了:

Fragment fragmentName = (fragmentName) getFragmentManager().findFragmentByTag("fragmentTag");
fragmentName.method();

但它是一个空指针。

非常感谢你。

2 个答案:

答案 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)仅在目标初始化后运行代码。