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
}
})
我在 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
}
})