2

コンテキスト メニューを作成するためのリスト ビューを登録するアクティビティがあります。

registerForContextMenu(getListView());

問題は、アイテムが無効になっているため、一部のアイテムを長くクリックしてもコンテキスト メニューが表示されないことです。

public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo)
{
    super.onCreateContextMenu(menu, v, menuInfo);

    bool bDisplayMenu = isItemEnabled(((AdapterView.AdapterContextMenuInfo) menuInfo).position);

    if(bDisplayMenu)
    {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.context_menu, menu);
    }
    else
    {
        // WHAT SHOUlD I DO HERE TO CANCEL THE CREATION OF THE CONTEXT MENU?
    }

}

onCreateContextMenu() が呼び出されると、コンテキスト メニューの作成をキャンセルする方法がわかりません。

4

1 に答える 1

2

さて、super を呼び出した直後に onCreateContextMenu() を終了すると、コンテキスト メニューがまったく表示されないことがわかりました。

これが正しい方法かどうかはわかりません (これに関するドキュメントは見当たりませんでした)。

public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo)
{
    super.onCreateContextMenu(menu, v, menuInfo);

    bool bDisplayMenu = isItemEnabled(((AdapterView.AdapterContextMenuInfo) menuInfo).position);

    if(bDisplayMenu)
    {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.context_menu, menu);
    }
    else
    {
        return; // the context menu will not be displayed
    }

}
于 2012-09-13T14:16:16.317 に答える