繁体   English   中英

如何接口onReceive方法

[英]How to Interface onReceive Method

我已经建立了一个名为NetworkStatus的类,该类监视设备的网络状态。 NetworkStatus我定义了一个BroadcastReceiver ,它监视连接性是否发生了变化,即,互联网是关闭还是打开 我想将此方法(即onReceive )“公开”给实例化NetworkStatus实例的活动。

我试图通过在NetworkStatus类中设置一个interface来实现此目的,但是我不确定如何从BroadcastReceiveronReceive方法调用该接口,即,

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指出的那样,要做到这一点就需要Activity 因此,我通过从传递给NetworkStatus类的构造函数的活动上下文进行强制转换来获得Activity ,即,将该类的构造函数设置为

private static nsc NetworkStatusCallbacks;
public NetworkStatus (Context context) {
    Activity activity = (Activity) context;
    nsc = (NetworkStatusCallbacks) activity;
}

然后,我可以从BroadcastReceiveronReceive方法调用该接口,如下所示:

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

    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM