我在同一个ContextMenu
或Activity
中有两个Fragment
。
以下是onCreateContextMenu
,我处理它们:
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
menu.setHeaderTitle("Available Actions");
if (v == listView) {
AdapterContextMenuInfo info = (AdapterContextMenuInfo) menuInfo;
position = info.position;
menu.add(2, 1, 1, "Edit");
menu.add(2, 2, 2, "Delete");
menu.add(2, 3, 3, "Share");
}
if (v == iPP) {
menu.add(1, 4, 1, "Pick From Gallery");
menu.add(1, 5, 2, "Capture Picture");
menu.add(1, 6, 3, "Remove");
}
super.onCreateContextMenu(menu, v, menuInfo);
}
当我舔{listView
时,它会夸大“编辑,删除,分享”就好了。但是当我点击iPP时,它会为iPP
和listView
提供所有6种选择吗?
有谁能看到发生了什么?
注意:iPP
是ImageView
答案 0 :(得分:1)
我打电话给两个registerForContextMenu()
。一个用于iPP
,一个用于listView
。由于iPP
在技术上属于listView
的一部分,因此它位于header
,我的寄存器中的两个都在调用。所以我只是遵守规则并针对listView
position
而不是View
类型进行了测试。
menu.setHeaderTitle("Available Actions");
AdapterContextMenuInfo info = (AdapterContextMenuInfo) menuInfo;
position = info.position;
ListView lv = (ListView) v;
int firstVisible = lv.getFirstVisiblePosition();
View rowView = lv.getChildAt(position - firstVisible);
if (position > 0) {
// if NOT in header
} else {
// if Part of Header
}