我尝试检查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
}
提前致谢
答案 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中使用网络功能代码。并捕获异常如果网络不可用。如果您使用任何网络检查代码,那么您还需要捕获异常。因为没有其他方法可以检查它是否被取代,意味着,如果网络在该功能之间丢失完成。