【问题标题】:How to make call backs between Fragments of the same Ativity如何在同一个Activity的Fragment之间进行回调
【发布时间】:2012-12-18 09:42:11
【问题描述】:

我在一个 Activity 中有 4 个标签。

它们每个都是一个片段。每个 Fragment 都有一个 ListView。

所以,如果我更改 Fragment 中的 ListView,它必须更改所有其他 Fragment 中的 ListView,即..,选项卡。

我面临的问题是在创建接口实例时。

它有自己的 onClick() 方法。

如果我想要回调父活动,我可以通过覆盖 onAttach 来实现。但是如何对 Fragment 进行回调呢?

来自开发者网站:

通常您会希望一个 Fragment 与另一个 Fragment 进行通信,例如根据用户事件更改内容。所有 Fragment 到 Fragment 的通信都是通过关联的 Activity 完成的。两个 Fragment 永远不应该直接通信。

那么,对 Activity 进行回调,然后再对其他 Fragment 进行回调??

谢谢

【问题讨论】:

    标签: android callback fragment


    【解决方案1】:

    这很简单,您只需要以下步骤:

    1) 从您的第一个片段中的onClick 方法进行活动的函数调用:

    ((IYourActivityInterface) getActivty()).activityMethod();
    

    2) 在您的活动中按标签或 ID 查找片段并运行它的方法:

    public void activityMethod(){
        Fragment tabFragment = getFragmentManager().findFragmentByTag("second_fragment");
        // or Fragment tabFragment = getFragmentManager().findFragmentById(R.id.frag);
        if (tabFragment!=null){
           ((IFragmentInterface) tabFragment).fragmentMethod();
        }
    }
    

    希望这是您正在寻找的。)

    【讨论】:

    • 这需要 fragmentMethod() 是静态的。但我不希望它是静态的。此外,如果它是静态的,我可以直接从其他 Fragment 调用它,而不是转到 Parent 活动并调用 fragmentMethod()。
    • 不,不是。 findFragmentByTag(...) 会返回一个带有此标签的当前显示片段的实例,因此您也可以调用非静态方法。编辑:这种模式也足够好,因为is done through the associated Activity
    • 或者您可以在创建片段时保留对片段的引用,而不是 findFragmentByTag。这样你就不需要每次想从活动中调用它时“找到”它。
    猜你喜欢
    • 2013-05-05
    • 1970-01-01
    • 1970-01-01
    • 2021-03-27
    • 1970-01-01
    • 2015-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多