两个ContextMenu在相同的活动/片段中

时间:2013-04-16 18:01:52

标签: android contextmenu

我在同一个ContextMenuActivity中有两个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时,它会为iPPlistView提供所有6种选择吗?

有谁能看到发生了什么?

注意:iPPImageView

1 个答案:

答案 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
                }