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()。我同意你的人为错误理论。