Ошибка системной службы, недоступной до oncreate

#java #android

#java #Android

Вопрос:

Я вызываю метод подключения к checkinternet. Ниже приведен код класса Java, имеющего метод checkinternet.

    public class PTs {

    private Context context;

    public PT(Context context) {
        this.context = context;
    }

    public Boolean checkinternet() {

        ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
        NetworkInfo activeinternet = connectivityManager.getActiveNetworkInfo();
        return activeinternet != null amp;amp; activeinternet.isConnected();

    }
  

в то время как я использую оператор if, как показано ниже, для получения статуса Интернета в другом действии.

 if (pt.checkinternet()){
//do some task
}
  

Почему возникает ошибка? может кто-нибудь помочь.

Комментарии:

1. Пожалуйста, покажите, как вы получаете pt объект.

2. публичный класс StartupActivity расширяет AppCompatActivity { PT pt = new PT(); @Override protected аннулирует onCreate(Bundle savedInstanceState) { //остаток кода для класса.

Ответ №1:

Никогда не создавайте экземпляр действия, службы или поставщика самостоятельно с помощью конструктора. Действие инициализировано неправильно, и поэтому вы не можете вызвать getSystemService() его.

Варианты исправления этого включают:

  • Переместите этот код в существующее действие, которое правильно запускается платформой, и используйте этот метод только из этого действия

  • Удалите extends AppCompatActivity из PT и checkinternet() примите Context в качестве параметра

Комментарии:

1. открытый класс PT { общедоступная логическая проверка интернета (контекст context) { ConnectivityManager ConnectivityManager = (ConnectivityManager) getSystemService (CONNECTIVITY_SERVICE); NetworkInfo activeinternet = ConnectivityManager.getActiveNetworkInfo(); возвращает activeinternet != null amp;amp; activeinternet.isConnected(); } с этими исправлениями все еще возникает ошибка в getSystemService. Все, что я оставил упомянуть.

2. Также обновлен вызывающий код как (performanceTweaks.checkinternet(StartupActivity.this))

3. @AnkurJain: Предположительно, вы вызываете checkinternet() перед onCreate() вызовом StartupActivity .

4. я очень новичок в этом, если вы сможете предоставить правильный способ кодирования, это будет действительно полезно.

5. возникла проблема, я писал getsystemservice вместо context.getsystemservice. Она работает.