Android 内部类广播错误.MainActivity$MyReceiver; no empty constructor

来源:互联网 发布:nero软件是否收费 编辑:程序博客网 时间:2024/05/16 04:08

广播的定义,如果是内部类,必须为静态类

http://blog.csdn.net/chdjj/article/details/19496567

下面总结一下作为内部类的广播接收者在注册的时候需要注意的地方
1.清单文件注册广播接收者时,广播接收者的名字格式需要注意。因为是内部类,所以需要在内部类所在的类与内部类之间加上$符号:
[html] view plaincopy在CODE上查看代码片派生到我的代码片
  1. android:name="com.example.brocastdemo.MainActivity$MyReceiver"  
2.内部类在声明时一定要写成静态内部类(class关键字前加上static)否则会抛出类似这样的异常:
[html] view plaincopy在CODE上查看代码片派生到我的代码片
  1. 02-19 09:11:14.650: E/AndroidRuntime(1771): java.lang.RuntimeException: Unable to instantiate receiver com.example.brocastdemo.MainActivity$MyReceiver: java.lang.InstantiationException: can't instantiate class com.example.brocastdemo.MainActivity$MyReceiver; no empty constructor  
大家可能会发现,采用静态注册的作为内部类的广播接收者使用起来很不方便,因为是静态内部类,所以该类中如果想使用外部类的变量/方法,该变量/方法也得是静态的。
所以还是强烈推荐大家使用动态方式注册,下面将例子改为动态方式注册。
0 0
原创粉丝点击