Android 如何接口onReceive方法

Android 如何接口onReceive方法,android,interface,Android,Interface,我已经设置了一个名为NetworkStatus的类来监视设备的网络状态。在NetworkStatus中,我定义了一个BroadcastReceiver,用于监控连接是否发生变化,即互联网是否已关闭或打开。我想将此方法(即,onReceive)“公开”给实例化NetworkStatus实例的活动 我试图通过在NetworkStatus类中设置接口来实现这一点,但我不确定如何从BroadcastReceiver的onReceive方法调用接口,即 public class NetworkStatus

我已经设置了一个名为
NetworkStatus
的类来监视设备的网络状态。在
NetworkStatus
中,我定义了一个
BroadcastReceiver
,用于监控连接是否发生变化,即互联网是否已关闭或打开。我想将此方法(即,
onReceive
)“公开”给实例化
NetworkStatus
实例的活动

我试图通过在
NetworkStatus
类中设置
接口来实现这一点,但我不确定如何从
BroadcastReceiver
onReceive
方法调用接口,即

public class NetworkStatus {
    public static interface NetworkStatusCallbacks {
        void onReceive();
    }

    public static class ConnectivityChange extends BroadcastReceiver {

        public void onReceive(Context context, Intent intent) {

            // need to call NetworkStatusCallbacks onReceive here
        }
    }

}
然后在主要活动中,我会做一些类似的事情

public class MyActivity extends Activity implements NetworkStatus.NetworkStatusCallbacks {

    @Override
    public void onReceive() {
      // Do stuff here
    }
}
如果你能给我指点,我会很感激的。谢谢

可能的解决方案

我想我已经找到了解决办法。正如Selvin指出的,要做到这一点,需要执行
活动
。因此,我通过从传递给
NetworkStatus
类的构造函数的活动上下文中强制转换来获得
活动,即将该类的构造函数设置为

private static nsc NetworkStatusCallbacks;
public NetworkStatus (Context context) {
    Activity activity = (Activity) context;
    nsc = (NetworkStatusCallbacks) activity;
}
然后,我可以从
BroadcastReceiver
onReceive
方法调用接口,如下所示:

public void onReceive(Context context, Intent intent) {
    nsc.onReceive();
}

试着这样做:

    public class NetworkStatus {
        public static interface NetworkStatusCallbacks {
            void onReceive();
        }

        private final NetworkStatusCallbacks m_cb;

        NetworkStatus(NetworkStatusCallbacks cb)
        {
          m_cb=cb;
        }

        public static class ConnectivityChange extends BroadcastReceiver {

            public void onReceive(Context context, Intent intent) {

                // need to call NetworkStatusCallbacks onReceive here
               m_cb.onReceive()
            }
        }

    }

简而言之,您不能,因为您没有MyActivity实例,所以最好将此信息存储在ConnectivityChange.onRecive的fx数据库中,并在Activity中读取这些值…好的。谢谢你,塞尔文。我不能将活动传递到构造函数中的
NetworkStatus
中吗?谢谢。但我得到了一个编译错误,即变量m_cb可能没有初始化?@Nargis m_cb应该是
ConnectivityChange
not
NetworkStatus
(与构造函数相同)的字段。。。唯一的问题是他是用代码还是AndroidManifest.xml设置BroadcastReceiver。。。如果在清单中它将不工作…广播接收器包含在清单文件中