抛出SuperNotCalledException的情况

时间:2014-06-06 06:05:24

标签: android exception

在Android应用程序中覆盖方法时,我们需要多次调用super方法。

在某些情况下,例如在片段的onActivityCreated()方法中,如果未调用super,则会抛出SuperNotCalledException。在其他情况下,例如在活动的onCreateOptionsMenu()方法中,虽然官方文档(http://developer.android.com/guide/topics/ui/actionbar.html)显示调用super方法的示例代码,但实际上并不是真正需要的,并且Exception将会不要被抛出。

所以我的问题是,如果有任何经验法则我可以用来猜测何时可能需要调用super。

1 个答案:

答案 0 :(得分:1)

通常,修改对象状态的活动和片段生命周期回调必须调用父实现。不修改对象状态但仅返回对象或修改作为参数传入的对象的回调(例如传递给Menu的{​​{1}})不需要调用父对象实现。父只提供了一个有用的默认实现(通常为空),但它可能被完全覆盖。

要了解onCreateOptionsMenu()的确切位置,grep the source

SuperNotCalledException问题也很容易重现和修复。只记得测试你的应用程序。