Xamarin Android Fragment中networkInfo.IsConnected空引用异常求助
解决Xamarin Android Fragment中网络检测的NullReferenceException问题
Hey there, let's break down this issue and fix it together!
错误原因解释
你碰到的System.NullReferenceException: Object reference not set to an instance of an object.,说白了就是你在尝试调用一个还没初始化(为null)的对象的属性或方法。
回到你的代码里,问题出在networkInfo.IsConnected这一行:当设备当前没有任何活跃的网络连接时,connMgr.ActiveNetworkInfo会直接返回null,这时候你直接去访问networkInfo.IsConnected,自然就触发了空引用异常。
解决办法
1. 先判空再访问属性
修改你的代码逻辑,先检查networkInfo是否为null,再判断连接状态,避免直接访问null对象:
ConnectivityManager connMgr = (ConnectivityManager)this.Activity.GetSystemService(Android.Content.Context.ConnectivityService); NetworkInfo networkInfo = connMgr.ActiveNetworkInfo; // 先确认networkInfo不为null,再访问IsConnected属性 bool isConnected = networkInfo != null && networkInfo.IsConnected;
这样即使设备没有网络,代码也不会抛出异常,isConnected会被正确设置为false。
2. 确保添加必要权限
别忘了在你的AndroidManifest.xml文件中添加访问网络状态的权限,否则ConnectivityManager可能无法正常获取网络信息,也会间接导致networkInfo为null:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
3. 适配高版本Android(可选)
如果你的应用目标是Android 10(API 29)及以上,官方更推荐使用ConnectivityManager.NetworkCallback来监听网络状态变化,这种方式比直接获取ActiveNetworkInfo更可靠。简单示例如下:
private ConnectivityManager.NetworkCallback _networkCallback; public override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); var connMgr = (ConnectivityManager)Activity.GetSystemService(Context.ConnectivityService); _networkCallback = new ConnectivityManager.NetworkCallback(); _networkCallback.OnAvailable += (sender, args) => { // 网络连接可用时的逻辑,注意切换到UI线程更新界面 Activity.RunOnUiThread(() => { /* 这里写你的UI更新或业务逻辑 */ }); }; _networkCallback.OnLost += (sender, args) => { // 网络断开时的逻辑 Activity.RunOnUiThread(() => { /* 这里写你的UI更新或业务逻辑 */ }); }; connMgr.RegisterDefaultNetworkCallback(_networkCallback); } public override void OnDestroy() { base.OnDestroy(); var connMgr = (ConnectivityManager)Activity.GetSystemService(Context.ConnectivityService); // 记得销毁时取消注册,避免内存泄漏 connMgr.UnregisterNetworkCallback(_networkCallback); }
内容的提问来源于stack exchange,提问作者user9317843
相关产品推荐
相关产品推荐

