我在注册一个网络监听时报了这个错:
07-22 09:30:06.411: E/AndroidRuntime(25736): FATAL EXCEPTION: main
07-22 09:30:06.411: E/AndroidRuntime(25736): Process: xxxxxxxx, PID: 25736
07-22 09:30:06.411: E/AndroidRuntime(25736): java.lang.RuntimeException: Unable to instantiate receiver xxxxxxxx.activity.BaseActivity$NetWorkConnectionChangeReceiver: java.lang.InstantiationException: can't instantiate class xxxxxxxx.activity.BaseActivity$NetWorkConnectionChangeReceiver;no empty constructor
07-22 09:30:06.411: E/AndroidRuntime(25736): at android.app.ActivityThread.handleReceiver(ActivityThread.java:2544)
07-22 09:30:06.411: E/AndroidRuntime(25736): at android.app.ActivityThread.access$1800(ActivityThread.java:169)
07-22 09:30:06.411: E/AndroidRuntime(25736): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1353)
07-22 09:30:06.411: E/AndroidRuntime(25736): at android.os.Handler.dispatchMessage(Handler.java:102)
07-22 09:30:06.411: E/AndroidRuntime(25736): at android.os.Looper.loop(Looper.java:136)
07-22 09:30:06.411: E/AndroidRuntime(25736): at android.app.ActivityThread.main(ActivityThread.java:5479)
07-22 09:30:06.411: E/AndroidRuntime(25736): at java.lang.reflect.Method.invokeNative(Native Method)
07-22 09:30:06.411: E/AndroidRuntime(25736): at java.lang.reflect.Method.invoke(Method.java:515)
07-22 09:30:06.411: E/AndroidRuntime(25736): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
07-22 09:30:06.411: E/AndroidRuntime(25736): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
07-22 09:30:06.411: E/AndroidRuntime(25736): at dalvik.system.NativeStart.main(Native Method)
07-22 09:30:06.411: E/AndroidRuntime(25736): Caused by: java.lang.InstantiationException: can't instantiate class xxxxxxxx.activity.BaseActivity$NetWorkConnectionChangeReceiver; no empty constructor
07-22 09:30:06.411: E/AndroidRuntime(25736): at java.lang.Class.newInstanceImpl(Native Method)
07-22 09:30:06.411: E/AndroidRuntime(25736): at java.lang.Class.newInstance(Class.java:1208)
07-22 09:30:06.411: E/AndroidRuntime(25736): at android.app.ActivityThread.handleReceiver(ActivityThread.java:2539)
07-22 09:30:06.411: E/AndroidRuntime(25736): ... 10 more
我使用的是静态注册,我刚开始是动态注册(没有问题)。
<receiver android:name="xxxxxxx.BaseActivity$NetWorkConnectionChangeReceiver" >
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
java 代码:这里写成static 很重要。。。
public static class NetWorkConnectionChangeReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
ConnectivityManager connectivityManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mobNetInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
NetworkInfo wifiNetInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if (wifiNetInfo.isConnected()) {
NToast.shortToast(context, "WIFI已连接");
} else {
NToast.shortToast(context, "WIFI连接断开");
}
}
}
xxx.xxx.xxxx.OutClass$MyReceiver
xxx.xxx.xxxx为你的广播接收器类所在的类的包名
OutClass为你的广播接收器类的外部类名