Android 是否需要super.onCreateContextMenu()?

Android 是否需要super.onCreateContextMenu()?,android,android-contextmenu,Android,Android Contextmenu,我有一个ActionBarActivity(来自v7支持库),它加载一个片段(来自v4支持库)。我在片段中实现了onCreateContextMenu(),如下所示: @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v,

我有一个
ActionBarActivity
(来自v7支持库),它加载一个
片段(来自v4支持库)。我在片段中实现了
onCreateContextMenu()
,如下所示:

@Override
public void onCreateContextMenu(ContextMenu menu, View v,
                                ContextMenuInfo menuInfo) {
    super.onCreateContextMenu(menu, v, menuInfo);
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.context_menu, menu);
}
为了理解是否确实需要调用super方法,我仔细阅读了以下android源代码:

  • ,其中有一行代码:

    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
        getActivity().onCreateContextMenu(menu, v, menuInfo);
    }
    
  • ,它没有
    onCreateContextMenu()

  • 由于
    ActionBarActivity
    FragmentActivity
    的一个子类,我研究了它,它也没有
    onCreateContextMenu()

  • 由于
    FragmentActivity
    Activity
    的一个子类,我查看了。其方法为空:

    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
    }
    

  • 我的结论是调用super方法没有意义。然而,这确实是一个超级。那么我的结论错了吗?如果是这样,原因是什么?

    您的结论是正确的,文档中只有一行超级代码,这没有坏处


    其他方法,如
    onCreate()
    onResume()
    等。但是,确实需要调用父类中的方法,如果没有调用,则抛出运行时异常。

    听到您的同意,我松了一口气。但我仍然很好奇,为什么他们会添加这一行,如果它没有任何作用。我不知道有没有什么地方可以解释。这些文件都是人类写的。有很多文档,所以并非每一行都是100%完美的。另一种解释是:当您使用Eclipse的自动完成方法在类中创建重写方法时,它会自动添加一个super.methodName()调用。也许示例的作者也不确定是否需要该调用,并将其保留在那里。Hmmm..但是eclipse的自动完成不会填写onCreateContextMenu()。我同意你的人为错误理论。