2013-05-10 1 views
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 
    } 

감사하다

답변

23

방법 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()null을 먼저 반환하는지 확인하십시오.

건배!

+0

It Worked !! 정말 고맙습니다. –

+0

조각이 작업에 첨부됩니다. 첨부되지 않으면 어떤 위험입니까? –

+0

첨부되어 있지 않은 경우,'getActivity()'는'null'을 돌려 주어, 결과적으로'getActivity(). getSystemService()'는'NullPointerException'를 슬로우합니다. 그러나이 코드를 어디에 호출하고 조각을 만드는 방법에 따라 다릅니다. 걱정할 것은 없습니다.) – Trinimon

2

더 좋은 방법은 try-catch에서 네트워크 기능 코드를 사용하는 것입니다. 그리고 네트워크를 사용할 수없는 경우 예외를 잡으십시오. 네트워크 검사 코드를 사용하는 경우 예외를 잡아야합니다. 성공 여부를 확인할 수있는 다른 방법이 없기 때문에 기능 간 네트워크 손실이 완료된 경우를 의미합니다.

+0

정보를 주셔서 감사합니다 –

+0

처음으로 같은 방식으로 검색했습니다. 마지막으로 나는이 결정에 도달했습니다. 나는 너와 간단히 나눴다. – Jithu