Подтвердить что ты не робот

Java.lang.InstantiationException: класс не имеет конструктора нулевых аргументов

Я пытаюсь использовать BroadcastReceiver в качестве внутреннего класса для отслеживания состояния сети, но я получил исключение в названии. Что мне делать, чтобы исправить эту проблему?

public class NetworkChangeReceiver extends BroadcastReceiver {
    public NetworkChangeReceiver() {
    }

    @Override
    public void onReceive(Context context, Intent intent) {
        final ConnectivityManager connMgr = (ConnectivityManager) context
                .getSystemService(Context.CONNECTIVITY_SERVICE);

        final android.net.NetworkInfo wifi = connMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);

        final android.net.NetworkInfo mobile = connMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);

        if (wifi.isAvailable() || mobile.isAvailable()) {
            setupData();
            Log.d("Netowk Available ", "Flag No 1");
        }

    }
}
4b9b3361

Ответ 1

Ваш

внутренний широковещательный приемник должен быть статическим (для регистрации через манифест)

ИЛИ

Нестатический широковещательный приемник должен быть зарегистрирован и незарегистрирован внутри родительского класса

для этого.

Я использовал ретранслятор Inner broadcast, не регистрируя его внутри класса. Либо сделайте его статическим и зарегистрируйтесь в манифесте, либо сделайте его нестатистическим, и зарегистрируйтесь и отмените регистрацию в родительском классе.

Ответ 2

Удалить пустой конструктор

public NetworkChangeReceiver() {
}

EDIT:

От этот поток Я узнал, что (нестатический) внутренний класс не может быть создан Android через AndroidManifest.xml. Вы должны динамически зарегистрировать его, как показано в ссылке выше.

Ответ 3

e ~~ Я просто встречаю эту проблему, и я реорганизую класс NetworkChangeReceiver в другое место