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