java.lang.InstantiationException: class 没有零参数构造函数

java.lang.InstantiationException: class has no zero argument constructor

我正在尝试使用 BroadcastReceiver 作为 内部 class 来跟踪网络状态,但我在标题中遇到了异常。我应该怎么做才能解决这个问题?

public class NetworkChangeReceiver extends BroadcastReceiver {

    @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");
        }
    }
}

无法通过 AndroidManifest.xml 注册非静态内部 class。您可以:

按照this thread中所述动态注册,并删除空构造函数。

或者,

使你的内部 class 静态,并在 AndroidManifext.xml.

中注册它

e~~刚遇到这个问题,我把classNetworkChangeReceiver重构到另一个地方

你的

inner Broadcast receiver must be static ( to be registered through Manifest)

Non-static broadcast receiver must be registered and unregistered inside the Parent class

为此。

我正在使用内部广播接收器,但没有在 class 中注册它。将其设为静态并在 Manifest 中注册,或者将其设为非静态并在父 class .

中注册和注销

只需让您的接收器 Class 静态如:

public [static] class ReceiverClass extends BroadcastReceiver