在我的应用程序中,我的主布局中有一个ListView。在相应的Activity中,我在onCreate中有以下内容:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
app = (MyTallyKeeperApplication) getApplication();
adapter = new TallyItemListAdapter(this, app.getTallyItems());
setListAdapter(adapter);
registerForContextMenu(getListView());
}
ListView中的每个项目都是TallyItemView类型,继承自LinearLayout。我用来夸大上下文菜单的代码是:
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
Log.i(MyTallyKeeperMain.class.getSimpleName(), "onCreateContextMenu");
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.item_menu, menu);
}
理论上,当您长按某个项目时,会显示一个上下文菜单,您可以选择编辑该项目或将其删除。但是当我长按一个项目时,没有显示任何内容。 关于如何解决这个问题的任何想法?
答案 0 :(得分:8)
如果列表具有可聚焦项(复选框等),则会发生这种情况。在列表行的布局中,为可聚焦组件包含此项。
android:focusable="false"
答案 1 :(得分:0)
尝试使用super.onCreateContextMenu(menu, v, menuInfo);
最后而不是第一次。 Here is a sample project显示使用带有ListView
的上下文菜单。