簡體   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