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");
}
}
}
Ответы
Ответ 1
Ваш
внутренний широковещательный приемник должен быть статическим (для регистрации через манифест)
ИЛИ
Нестатический широковещательный приемник должен быть зарегистрирован и незарегистрирован внутри родительского класса
для этого.
Я использовал ретранслятор Inner broadcast, не регистрируя его внутри класса. Либо сделайте его статическим и зарегистрируйтесь в манифесте, либо сделайте его нестатистическим, и зарегистрируйтесь и отмените регистрацию в родительском классе.
Ответ 2
Удалить пустой конструктор
public NetworkChangeReceiver() {
}
EDIT:
От этот поток Я узнал, что (нестатический) внутренний класс не может быть создан Android через AndroidManifest.xml. Вы должны динамически зарегистрировать его, как показано в ссылке выше.
Ответ 3
e ~~ Я просто встречаю эту проблему, и я реорганизую класс NetworkChangeReceiver
в другое место