检查片段中的网络连接

时间:2013-05-10 11:35:24

标签: android android-networking

我尝试检查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
    }

提前致谢

2 个答案:

答案 0 :(得分:25)

方法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 additianal note :如果片段在没有附加到任何活动的情况下存在潜在风险,请检查getActivity()是否返回{{ 1}}首先。

干杯!

答案 1 :(得分:3)

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