【问题标题】:NetworkInfo.IsConnected Object reference not set to an instance of an object on xamarinNetworkInfo.IsConnected 对象引用未设置为 xamarin 上的对象实例
【发布时间】:2018-07-03 18:28:43
【问题描述】:

我正在尝试检测与 Xamarin Android 的连接。

当我连接到 wifi 或漫游时,我没有任何错误。

但是当我没有连接到互联网时,我会遇到 System.NullReferenceException 错误并且应用程序崩溃。

ConnectivityManager connectivityManager = (ConnectivityManager)GetSystemService(ConnectivityService);
NetworkInfo info = connectivityManager.ActiveNetworkInfo;

bool isOnline = info.IsConnected; //error is here

通常,布尔 isConnected 应该变为 false。但我不知道为什么它是空的。

我该如何解决这个问题?

【问题讨论】:

  • 如果您没有连接到互联网,connectivityManager.ActiveNetworkInfo 很可能返回 null,因此尝试访问 null 对象的属性 IsConnected 会产生 NullReferenceException,请包装您的 `bool isOnline = info.IsConnected 在尝试捕获并捕获 NullReferenceException 或在执行 isOnline = info.IsConnected 之前检查是否 info == null。

标签: c# android visual-studio xamarin connectivity


【解决方案1】:

如果您没有连接到互联网,connectivityManager.ActiveNetworkInfo 很可能返回 null,因此尝试访问 null 对象的属性 IsConnected 会产生 NullReferenceException

快速修复:

//Use a ternary expression to evaluate whether info equals null, if so set
//bool to false, else use the IsConnected property
bool isOnline = info == null ? false : info.IsConnected;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多