在Android应用程序中覆盖方法时,我们需要多次调用super方法。
在某些情况下,例如在片段的onActivityCreated()
方法中,如果未调用super,则会抛出SuperNotCalledException
。在其他情况下,例如在活动的onCreateOptionsMenu()
方法中,虽然官方文档(http://developer.android.com/guide/topics/ui/actionbar.html)显示调用super方法的示例代码,但实际上并不是真正需要的,并且Exception将会不要被抛出。
所以我的问题是,如果有任何经验法则我可以用来猜测何时可能需要调用super。
答案 0 :(得分:1)
通常,修改对象状态的活动和片段生命周期回调必须调用父实现。不修改对象状态但仅返回对象或修改作为参数传入的对象的回调(例如传递给Menu
的{{1}})不需要调用父对象实现。父只提供了一个有用的默认实现(通常为空),但它可能被完全覆盖。
要了解onCreateOptionsMenu()
的确切位置,grep the source。
SuperNotCalledException
问题也很容易重现和修复。只记得测试你的应用程序。