BroadcastReceiver 中的接口仅调用 activity 而不是片段

Interface in BroadcastReceiver call only activity instead of fragment

我在 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 将触发调用片段?

编辑:

我把它放在 Activity

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

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

或者在 Activity 中您可以找到 Fragment 并直接调用 onStateChange(),因此您将获得链式调用(与 onOptionsItemSelected 相同的机制)。

//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
            }
        })