3

我试图检查我的 SherlockFragment 中的网络连接,但无法识别 getSystemService() 方法。

下面是我的代码(来自http://developer.android.com/training/basics/network-ops/connecting.html

    ConnectivityManager connMgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
    if (networkInfo != null && networkInfo.isConnected()) {
        // fetch data
    } else {
        // display error
    }

提前致谢

4

2 回答 2

27

该方法getSystemService()未在片段上定义,因此首先使用 获取活动getActivity(),例如:

ConnectivityManager connMgr = (ConnectivityManager) getActivity()
                             .getSystemService(Context.CONNECTIVITY_SERVICE);

NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();

if (networkInfo != null && networkInfo.isConnected()) {
    // fetch data
} else {
    // display error
}

ps附加说明:如果存在fragment在没有附加到任何activity的情况下运行的潜在风险,请先检查是否getActivity()返回null

干杯!

于 2013-05-10T11:37:31.267 回答
3

更好的方法是在 try-catch 中使用网络函数代码。并捕获异常如果网络不可用。如果您使用任何网络检查代码,那么您还需要捕获异常。因为您没有其他方法可以检查它是否成功,这意味着,如果功能之间丢失的网络完成。

于 2013-05-10T11:39:10.223 回答