0

私はContextMenu同じActivityまたはに2つ持ってい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);

}

1つをなめると、listView「編集、削除、共有」がうまく膨らみます。しかし、iPP をクリックすると、iPPlistView?の両方の 6 つの選択肢すべてが膨らみます。

誰が何が起こっているのか見ることができますか?

注: iPPImageView

4

1 に答える 1

1

registerForContextMenu()私は 2の 'sを呼び出していた。に1 つ、iPPに 1 つlistViewiPPは技術的には の一部だった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
                }
于 2013-04-16T22:08:39.443 に答える