在我的Android应用程序中,我有两个片段。父片段包含可用过滤器类型的列表,当单击特定过滤器类型时(在父片段-黄色背景中),相应的子片段(粉红色背景)随即打开,其中包含所选过滤器类型的可用选项列表。我的要求是,一旦用户在子片段中选择/取消选择一个选项,它就应该在父片段中反映/更新选项计数(绿色)。

请检查连接的线框。

android - 从子 fragment 更新父 fragment-LMLPHP

最佳答案

您可以使用Otto Bus进行片段,片段活动,服务等之间的通信。

也许,如果您以前从未使用过,那么第一次可能会有些奇怪,但是它功能强大且易于使用。您可以在此处找到该库和教程:

http://square.github.io/otto/

一个例子。在您的适配器中或您有项目单击事件的地方,可以通过总线发送对象。

在您的总线中,调用post方法并传递对象。 (我建议为Bus创建一个单例)。

单例总线提供程序。

/**
 * Canal de comunicacion
 */
public class BusProvider {

    private static final Bus REST_BUS = new Bus(ThreadEnforcer.ANY);
    private static final Bus UI_BUS = new Bus();

    private BusProvider() {};

    public static Bus getRestBusInstance() {
        return REST_BUS;
    }

    public static Bus getUIBusInstance () {
        return UI_BUS;
    }
}


您可以在总线中(在您的子片段中)发送一个对象,如下所示:

BusProvider.getUIBusInstance().post(itemSelected);


在您的父片段中,您预订此事件:

@Subscribe
public void activitySelected(final Item itemSelected) {

}


希望对您有帮助!!

10-05 17:40