Java 仅将此作为上下文使用的弹出菜单

Java 仅将此作为上下文使用的弹出菜单,java,android,popupmenu,Java,Android,Popupmenu,当使用此代码构建弹出菜单时 PopupMenu menu = new PopupMenu(getApplication(), view); menu.getMenu().add("first"); menu.getMenu().add("second"); menu.show(); 将引发此错误: java.lang.RuntimeExeption:二进制XML文件行#17您必须提供 布局\高度分布 使用此而不是getApplication()时,一切正常。 这里有什么问题?为什么我不能通过g

当使用此代码构建弹出菜单时

PopupMenu menu = new PopupMenu(getApplication(), view);
menu.getMenu().add("first");
menu.getMenu().add("second");
menu.show();
将引发此错误:

java.lang.RuntimeExeption:二进制XML文件行#17您必须提供 布局\高度分布

使用
而不是
getApplication()
时,一切正常。

这里有什么问题?为什么我不能通过
getApplication()
获得对上下文的引用?

我建议您阅读本文。它解释了不同类型的
上下文之间的差异。请特别注意标题为“上下文能力”一节中的表格


简言之,当您使用
getApplication()
(这在很大程度上与
getApplicationContext()
相同)时,您得到的
Centext
只是一部分。由于
应用程序
没有UI,因此在涉及UI元素时,有些事情是您无法使用它的。

您不想要
getApplicationContext()
?@tyczj:请参阅我的答案和我链接到的文章。特别是上下文功能部分中的表。