2013-08-01 158 views
11

我有這個功能,網絡連接無法從類型使靜態參考非靜態方法getSystemService(字符串)

public boolean isNetworkConnected() { 
    ConnectivityManager conManager = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo netInfo = conManager.getActiveNetworkInfo(); 

    if (netInfo == null) { 
     // There are no active networks. 
     return false; 
    } else { 
     return true; 
    } 
} 

但當IA試圖使其靜態,這樣我可以用它每一項活動是拋出:

無法從類型使靜態參考非靜態方法 getSystemService(字符串)

我不想每次都創建這個類的對象。

回答

25

添加非靜態依賴作爲參數:

public static boolean isNetworkConnected(Context c) { 
     ConnectivityManager conManager = (ConnectivityManager) c.getSystemService(Context.CONNECTIVITY_SERVICE); 
     NetworkInfo netInfo = conManager.getActiveNetworkInfo(); 
     return (netInfo != null && netInfo.isConnected()); 
} 
+0

感謝您的幫助 – Developer

2

getSystemServiceContext類的非靜態方法,所以爲了訪問它,你需要從Context.Typically你從哪裏Activty this也是Context對象內部調用它的類的對象。爲了解決你可以上下文傳遞給你的方法isNetworkConnected

+0

仍然不清楚 –

+0

@marthajames究竟哪部分「將上下文傳遞給你的方法」尚不清楚? – Blackbelt

0

現在我們可以使用靜態函數getContext()獲得從Cocos2dxActivity.java

繼承上下文
+1

請提供一個使用它的例子 –

相關問題