【问题标题】:How from one fragment start method in another?如何从一个片段开始另一个方法?
【发布时间】:2014-07-21 14:35:40
【问题描述】:

在片段 A 中,我具有检索 url 的功能 在片段 B 中,我具有继续并显示 url 的功能。

片段 A 如何告诉片段 B 有新数据要处理,其中 2 个片段并排放置?

【问题讨论】:

    标签: android fragment


    【解决方案1】:

    你需要定义一个接口,并在接口中调用一个方法。另一个片段将实现该接口,当方法被调用时,您将调用您需要的方法。

    希望对你有帮助。

    编辑:

    这是我建议的一种方法。在我的场景中,FragmentA 是调用您的方法的那个,而 FragmentB 是包含该方法的那个。

    在你的fragmentA中定义这个接口

    public interface FragmentContainer {
        void onMethodThatYouWantToBeFired();
    }
    

    在 onAttach 中,执行以下操作:

    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        Fragment parentFragment = getParentFragment();
        if (parentFragment == null) {
            mFragmentContainer = (FragmentContainer) activity;
        } else {
            mFragmentContainer = (FragmentContainer) parentFragment;
        }
    }
    

    让你的activity实现YourFragment.FragmentContainer并覆盖方法void onMethodThatYouWantToBeFired();
    当此方法被触发时,调用在 FragmentB 中注册的侦听器。当监听器被触发后,就可以调用 FragmentB 中你感兴趣的方法了。

    希望对你有帮助。

    【讨论】:

    • 有一个问题,我无法解决。 Fragment B 实现了监听器,这部分很简单。但是片段 A 如何初始化监听器并因此使用它的方法呢?
    • 你应该使用你的活动来让你的片段相互交流。
    • 我写了一个大纲,我将如何实现你的场景。我希望它对你有用。
    • 整个问题是两个片段彼此完全独立,除了我想要进行的通信。它们都是由活动同时启动的。它们同时运行
    • 没关系....你的activity从FragmentA接收回调并通过接口转发给FragmentB,FragmentB触发你感兴趣的方法。
    【解决方案2】:

    片段是用来重复使用的……也就是说,两个片段不应该直接在彼此之间传递数据。相反,您应该在 Activity 中定义 callback method。这将确保您可以在需要时在应用程序的其他地方(以及您制作的其他应用程序)中重复使用您的片段。

    【讨论】:

    • 重新使用,这正是我对通信感兴趣的原因。我想更新数据而不是重新创建片段。
    • 您可以根据需要使用 Bundle 在它们之间传递数据。这里已经有一个线程。谷歌一下。
    • 我不需要路径数据,我需要调用方法
    • 然后从你对片段充气时开始调用该方法。
    • 不知何故我感觉你认为片段 B 是由片段 A 开始的......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-28
    • 1970-01-01
    相关资源
    最近更新 更多