SuperNotCalledException

这里写图片描述

上图中这个错误是我在继承Activity重写父类的onCreate方法时由于没有调用super.onCreate()而引发的问题,属于运行时异常,诸如activity的其他周期方法也会出现类似问题。由此可见,android api中当我们继承某些类重写一些方法时,有些是要求必须调用super方法的。
查看Activity的源码我们不难发现这个类里好多on开头的周期方法还有好多perform开头的执行周期方法的方法,比如:

这里写图片描述

这里写图片描述

这里写图片描述

上边三幅图是我从Activity源码里截的图,第一幅图中从方法名可以猜出这个方法应该是调用了onStart()方法,方法里有句把mCalled置为false,这个mCalled是这个类里的一个全局变量,然后调用了callActivityOnStart(this)方法,再来看看第二幅图中的callActivityOnStart(Activity activity)这个方法,就一句代码,那就是调用了onStart()方法,再来看看第三幅图是onStart方法,调用了一个mCalled = true,然后回到第一幅图中继续往下看出现了一条以mCalled为条件的if语句可以看出如果不执行this.onStart()方法就没法把mCalled置为true,会导致!mCalled值为true肯定就执行这个抛错语句。可能这时候大家会想我们可以不调用super,直接在子类里把mCalled变量改为true不就可以了吗,可是这个mCalled变量(boolean mCalled;)是缺省类型的,不能被子类调用。所以只能通过调用super方法来达到程序正常运行的效果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值