无法从类型中对非静态方法getSystemService(String)进行静态引用

时间:2013-08-01 11:20:04

标签: android android-intent android-networking android-internet

我有这个功能哪个网络连接

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;
   }
}

但是当我试图让它变得静止时,我可以在它抛出的每个活动中使用它:

  

无法对非静态方法进行静态引用   来自类型

的getSystemService(String)

我不想每次都创建该类的对象。

3 个答案:

答案 0 :(得分:29)

将非静态依赖项添加为参数:

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

答案 1 :(得分:2)

getSystemServiceContext类的非静态方法,因此为了访问它,您需要一个Context类中的对象。通常在Activity中调用它{{1} }也是this的对象。为了解决问题,您可以将Context传递给方法Context

答案 2 :(得分:0)

现在我们可以使用静态函数getContext()来获取从Cocos2dxActivity.java继承的上下文