当我检查互联网连接时出现错误

时间:2018-12-28 16:41:43

标签: java android

我真的是android上的新手,并且正在开发一个需要检查设备是否已连接到互联网的应用程序。这是我不断得到的错误。

  

java.lang.IllegalStateException:系统服务不可用于   android.app.Activity.getSystemService上onCreate()之前的活动

public class Fragment_Home extends Fragment implements Class_Home_Adapter.OnItemClickListener {
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_home, container, false);
    readJsonFile();
return v;
}

private void readJsonFile() { 
        Class_Check_Internet_Connection class_check_internet_connection = new Class_Check_Internet_Connection();
        Log.e(TAG, "Internet Status: " + class_check_internet_connection.internetStatus());
}

这是我用来检查互联网连接的课程

public class Class_Check_Internet_Connection extends Activity {
    public static boolean isNetworkAvailable(Context context){
        ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
        if ((activeNetworkInfo != null)&&(activeNetworkInfo.isConnected())){
            return true;
        }else{
            return false;
        }
    }
    public boolean internetStatus() {
        boolean isNetworkAvailable = Class_Check_Internet_Connection.isNetworkAvailable(this);
        return isNetworkAvailable;
    }
}

1 个答案:

答案 0 :(得分:1)

没有理由在您的Class_Check_Internet_Connection类中“扩展活动”。看来您正在课堂上扩展Activity -可能试图强制创建ContextContext是通过onCreate()方法创建的。但是,由于没有Context方法,因此您正在“绕过” onCreate()的创建...所以这是空的!

但是您不需要创建Context-您也不应该。您不应为此课程扩展Activity!而是将Context作为参数传递给类。

// Snake case is generally not used with Jave, but I will leave it...
public class Class_Check_Internet_Connection {

    Context mContext = null;
    public Class_Check_Internet_Connection(Context context){
        this.mContext = context;
    }

    public static boolean isNetworkAvailable(){
        ConnectivityManager connectivityManager = (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
        if ((activeNetworkInfo != null)&&(activeNetworkInfo.isConnected())){
            return true;
        }else{
            return false;
        }
    }

    // another public (!) method to simply query isNetworkAvailable?? If you think you need it....
    public boolean internetStatus() {
        boolean isNetworkAvailable = Class_Check_Internet_Connection.isNetworkAvailable();
        return isNetworkAvailable;
    }
}

// Strange name for a method that checks the internet connectivity!!
private void readJsonFile() { 
        Class_Check_Internet_Connection class_check_internet_connection = new Class_Check_Internet_Connection(this);
        Log.e(TAG, "Internet Status: " + class_check_internet_connection.internetStatus());
}




注意:
我没有检查您的代码以查看其是否正常运行。我只是在解决您收到的错误。