在Android应用中覆盖方法时,很多时候我们需要调用super方法。
在某些情况下,例如在片段的onActivityCreated()
方法中,如果未调用super,则会抛出SuperNotCalledException
。在其他情况下,例如在活动的onCreateOptionsMenu()
方法中,尽管官方文档(http://developer.android.com/guide/topics/ui/actionbar.html)显示了调用super方法的示例代码,但实际上并不需要,并且不会引发Exception。
所以我的问题是,是否有任何经验法则可以用来猜测何时可能需要调用super。
最佳答案
通常,修改对象状态的活动和片段生命周期回调必须调用父实现。不会修改对象状态而是仅返回一个对象或修改作为参数传入的对象的回调(例如传递给Menu
的onCreateOptionsMenu()
)不需要调用父实现。父级仅提供有用的默认实现(通常为空),但可能会被完全覆盖。
要了解SuperNotCalledException
的确切位置,请输入grep the source。SuperNotCalledException
问题也很容易重现和解决。只要记住要测试您的应用即可。
关于android - 抛出SuperNotCalledException的情况,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24075254/