【问题标题】:Interface in BroadcastReceiver call only activity instead of fragmentBroadcastReceiver 中的接口仅调用活动而不是片段
【发布时间】:2016-04-27 13:54:34
【问题描述】:

我在我的NetworkReceiver 中实现了一个custom interface

public interface onNetworkStateChanged {
    void onStateChange(int state);
}

我已将它们都设置在我的 Activity 和 Fragment 上

network = new NetworkReceiver();
network.setOnNetworkStateChanged(this);

---------------------------------------------

@Override
public void onStateChange(int state) {
    if (state == NetworkReceiver.STATE_ON) {
        networkState = state;
    } else {
        networkState = state;
    }
}

当触发 NetworkReceiver 时,总是会调用 Activity 中的侦听器,而不是片段中的侦听器

有人有想法吗?或者我需要在我的片段中实现一个 customCallback,该活动将触发谁来调用片段?

编辑:

我已经把它放在 Activity 的 onStateChange 上

Fragment f = getFragmentManager().findFragmentByTag(Utils.FEED_FRAGMENT);
if (f instanceof FeedFragment) {
    ((FeedFragment) f).onStateChange(state);
}

【问题讨论】:

    标签: android android-fragments android-activity interface broadcastreceiver


    【解决方案1】:

    很难说,因为你的代码不完整。您应该将 Fragment 注册为侦听器,似乎 setOnNetworkStateChanged(this) 使用 Activity 实例。

    或者在 Activity 中你可以找到 Fragment 并直接调用 onStateChange(),这样你就会得到链式调用(与 onOptionsItemSelected 相同的机制)。

    【讨论】:

    • 感谢您的回答,我想我会按照您所说的将我的 Fragment 注册为侦听器,当触发 onStateChanged 时,我还会调用 Fragment 侦听器以更新我的内容:),谢谢
    【解决方案2】:
    //create a public method setNetworkChageListner() inside NetworkReceiver
    
    public void setNetworkChageListner(onNetworkStateChanged onNetwokChanged){
      this.onNetworkChanged=onNetworkChanged
    }
    /*check the global variable onNetworkChanged is null when you trigger the method onStateChange(int state)*/
    
    //inside your fragment use receiver static variable of activity
    netwok_receiver_static_variable.setNetworkChageListner(new NetworkReceiver.onNetworkStateChanged () {
                @Override
                public void onStateChange() {
                    //do operation
                }
            })
    

    【讨论】:

      猜你喜欢
      • 2016-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-29
      • 2018-11-29
      • 1970-01-01
      相关资源
      最近更新 更多