web-dev-qa-db-ja.com

java.lang.InstantiationException:クラスにゼロ引数コンストラクタがない

BroadcastReceiver内部クラスとして使用してネットワークの状態を追跡しようとしていますが、タイトルに例外があります。この問題を解決するにはどうすればよいですか?

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

きみの

インナーブロードキャストレシーバーは静的である必要があります(マニフェストを介して登録されるため)

OR

非静的ブロードキャストレシーバーは、親クラス内で登録および登録解除する必要があります

このため。

クラス内で登録せずに、インナーブロードキャストレシーバーを使用していました。静的にしてマニフェストに登録するか、非静的にして親クラス内で登録および登録解除します。

96
Ajji

静的でない内部クラスは、AndroidManifest.xmlを介して登録できません。次のいずれかを実行できます。

このスレッド で概説されているように動的に登録し、空のコンストラクターを削除します。

または、

内部クラスをstaticにして、AndroidManifext.xmlに登録します。

16
Mehmet K

receiverクラスを次のように静的にします。

public [static] class ReceiverClass extends BroadcastReceiver

1
Hadi