今天开发的时候,测试提交给我一个问题,我怎么测都测不出来,可在测试那一点就奔溃。
无奈,把测试的手机那过来,果然奔溃。打印日志一看,得到日志如下:
W/System.err: java.lang.NoClassDefFoundError: android/os/PersistableBundle W/System.err: at java.lang.Class.getDeclaredMethods(Native Method) W/System.err: at java.lang.Class.getDeclaredMethods(Class.java:656) W/System.err: at de.greenrobot.event.SubscriberMethodFinder.findSubscriberMethods(SubscriberMethodFinder.java:75) W/System.err: at de.greenrobot.event.EventBus.register(EventBus.java:163) W/System.err: at de.greenrobot.event.EventBus.register(EventBus.java:133)
后来Google了一下,原来是我们重写 Activity OnCreate导致的兼容性问题。
系统要求,我们重写OnCreate的时候,方法名必须以protected来声明,而我在项目中用的是public。
更改前:
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.my_personcenter_item_act); EventBus.getDefault().register(this); initView(); initData(); initFragment(); }
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.my_personcenter_item_act); EventBus.getDefault().register(this); initView(); initData(); initFragment(); }
OK,问题解决。