Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 对来自另一个片段的片段调用方法_Android_Android Fragments - Fatal编程技术网

Android 对来自另一个片段的片段调用方法

Android 对来自另一个片段的片段调用方法,android,android-fragments,Android,Android Fragments,如何从另一个片段中调用片段上的方法 我试过: Fragment fragmentName = (fragmentName) getFragmentManager().findFragmentByTag("fragmentTag"); fragmentName.method(); 但它是一个空指针 非常感谢。除了childfragments之外,您不应该在片段之间直接通信。相反,使用您的活动作为中介 FragmentA { public void sendMessageToB(Strin

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

我试过:

Fragment fragmentName = (fragmentName) getFragmentManager().findFragmentByTag("fragmentTag");
fragmentName.method();
但它是一个空指针


非常感谢。

除了childfragments之外,您不应该在片段之间直接通信。相反,使用您的活动作为中介

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

如果不这样做,请在保存片段的活动上调用方法,然后让活动在第二个片段上调用方法。如何?你能给我一个样品吗?