无法在我的侦听器和广播接收器中涉及接口方法空对象引用

Hao

也许我的问题标题在stackoverflow上还有其他问题,但是我找不到任何有用的信息,所以我需要任何人帮助解决我的特定问题:我想连续检查Internet连接,因此我创建了一个广播接收器扩展类,它具有侦听器如下:

NetworkStateReceiver.java:

public class NetworkStateReceiver extends BroadcastReceiver {

    public interface NetworkStateListener {
        void onNetChange(int status);
    }

    private NetworkStateListener mOnNetworkStateListener;

    public void setNetworkStateListener(NetworkStateListener listener) {
        mOnNetworkStateListener = listener;
    }

    public void onReceive(Context context, Intent intent) {
        int status = NetworkUtil.getConnectivityStatus(context);
        if (mOnNetworkStateListener != null)
            mOnNetworkStateListener.onNetChange(status);
    }
}

在我的活动中:

public class FrgChoosing extends Fragment {
    private NetworkStateReceiver mNetworkStateCallback;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {   
        ...
        initNetworkChecking();
    } 
    private void initNetworkChecking() {
        mNetworkStateCallback = new NetworkStateReceiver();
        mNetworkStateCallback.setNetworkStateListener(new NetworkStateListener() {      
            @Override
            public void onNetChange(int status) {
                // TODO Auto-generated method stub
                switch (status) {
                case NetworkUtil.TYPE_WIFI:
                    Functions.toastString("have wifi connection", getActivity());
                    break;
                case NetworkUtil.TYPE_MOBILE:
                    Functions.toastString("have 3g connection", getActivity());
                    break;
                case NetworkUtil.TYPE_NOT_CONNECTED:
                    Functions.toastString("no connection", getActivity());
                    break;
                default:
                    break;
                }
            }
        });
    }
}

在清单中:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
...
<receiver android:name=".NetworkStateReceiver">
    <intent-filter>
        <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
        <action android:name="android.net.wifi.WIFI_STATE_CHANGED" />
    </intent-filter>
</receiver>

在看到logcat之后,我相信当触发NetworkStateReceiver.onReceiver时,mOnNetworkStateListener始终为null。我不知道错误在哪里?有人可以帮助我解决此问题吗?预先感谢大家。

愚蠢的

您需要注册广播接收器。完全FrgChosing:

    private void initNetworkChecking() {
        // TODO Auto-generated method stub
        if (!Functions.hasConnection(getActivity())) {
            Functions.toastString(getActivity().getResources().getString(R.string.alert_no_internet), getActivity());
        }
        mNetworkStateCallback = new NetworkStateReceiver();
        mNetworkStateCallback.setNetworkStateListener(new NetworkStateListener() {      
            @Override
            public void onNetChange(int status) {
                // TODO Auto-generated method stub
                switch (status) {
                case NetworkUtil.TYPE_WIFI:
                    Functions.toastString("co mang wifi", getActivity());
                    break;
                case NetworkUtil.TYPE_MOBILE:
                    Functions.toastString("co mang 3g", getActivity());
                    break;
                case NetworkUtil.TYPE_NOT_CONNECTED:
                    Functions.toastString("mat mang roi", getActivity());
                    break;
                default:
                    break;
                }
            }
        });
        IntentFilter filter = new IntentFilter();
        filter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
        filter.addAction("android.net.wifi.WIFI_STATE_CHANGED");
        getActivity().registerReceiver(mNetworkStateCallback, filter);
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

片段中的广播接收器无法从服务接收意图

来自分类Dev

我的通知无法播放广播接收器

来自分类Dev

广播接收器

来自分类Dev

广播接收器类和registerReceiver方法

来自分类Dev

如何在Android应用中实施FCM?是否有可能在FCM中使用相同的GCM侦听器和接收器方法?

来自分类Dev

如何在Android应用中实施FCM?是否有可能在FCM中使用相同的GCM侦听器和接收器方法?

来自分类Dev

AlarmManager无法从广播接收器工作

来自分类Dev

AlarmManager无法从广播接收器工作

来自分类Dev

广播接收器始终无法充电

来自分类Dev

我的广播接收器未从本地服务接收广播

来自分类Dev

广播接收器和屏幕关闭

来自分类Dev

注册和注销广播接收器?

来自分类Dev

GPS侦听器/接收器唤醒CPU

来自分类Dev

广播接收器中PACKAGE_INSTALL的替代方法

来自分类Dev

静态方法还是广播接收器?

来自分类Dev

在广播接收器中更新TextView

来自分类Dev

广播接收器中的吐司

来自分类Dev

BaseAdaper中的广播接收器

来自分类Dev

Go中的方法和接收器

来自分类Dev

AIDL,接口回调,EventBus,广播接收器?

来自分类Dev

为什么在我的广播接收器中无法识别我的字符串-发送短信代码

来自分类Dev

为什么在我的广播接收器中无法识别我的字符串-发送短信代码

来自分类Dev

无法通过此代码接收消息(广播接收器)

来自分类Dev

我的广播接收器未接收到

来自分类Dev

广播接收器vs唤醒广播接收器

来自分类Dev

广播接收器或服务?

来自分类Dev

飞行模式关闭/开启后,广播接收器花费的时间太长,无法在onReceive()中接收

来自分类Dev

广播接收器“接收”方法没有被调用吗?

来自分类Dev

广播接收器未在android中接收意图数据。

Related 相关文章

  1. 1

    片段中的广播接收器无法从服务接收意图

  2. 2

    我的通知无法播放广播接收器

  3. 3

    广播接收器

  4. 4

    广播接收器类和registerReceiver方法

  5. 5

    如何在Android应用中实施FCM?是否有可能在FCM中使用相同的GCM侦听器和接收器方法?

  6. 6

    如何在Android应用中实施FCM?是否有可能在FCM中使用相同的GCM侦听器和接收器方法?

  7. 7

    AlarmManager无法从广播接收器工作

  8. 8

    AlarmManager无法从广播接收器工作

  9. 9

    广播接收器始终无法充电

  10. 10

    我的广播接收器未从本地服务接收广播

  11. 11

    广播接收器和屏幕关闭

  12. 12

    注册和注销广播接收器?

  13. 13

    GPS侦听器/接收器唤醒CPU

  14. 14

    广播接收器中PACKAGE_INSTALL的替代方法

  15. 15

    静态方法还是广播接收器?

  16. 16

    在广播接收器中更新TextView

  17. 17

    广播接收器中的吐司

  18. 18

    BaseAdaper中的广播接收器

  19. 19

    Go中的方法和接收器

  20. 20

    AIDL,接口回调,EventBus,广播接收器?

  21. 21

    为什么在我的广播接收器中无法识别我的字符串-发送短信代码

  22. 22

    为什么在我的广播接收器中无法识别我的字符串-发送短信代码

  23. 23

    无法通过此代码接收消息(广播接收器)

  24. 24

    我的广播接收器未接收到

  25. 25

    广播接收器vs唤醒广播接收器

  26. 26

    广播接收器或服务?

  27. 27

    飞行模式关闭/开启后,广播接收器花费的时间太长,无法在onReceive()中接收

  28. 28

    广播接收器“接收”方法没有被调用吗?

  29. 29

    广播接收器未在android中接收意图数据。

热门标签

归档