即使没有listitem,也会显示上下文菜单

时间:2014-02-21 08:44:22

标签: android listview contextmenu

我在列表中添加了一个上下文菜单。但即使没有列表项,列表也会显示上下文菜单。 这是我的代码

@Override
public void onCreateContextMenu(ContextMenu menu, View v,
        ContextMenuInfo menuInfo) {
    // TODO Auto-generated method stub
    super.onCreateContextMenu(menu, v, menuInfo);
    if (v.getId()==R.id.list) {
        AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)menuInfo;
        menu.add(getString(R.string.Delete));
    }
}
/* (non-Javadoc)
 * @see android.app.Activity#onContextItemSelected(android.view.MenuItem)
 */
@Override
public boolean onContextItemSelected(MenuItem item) {
    // TODO Auto-generated method stub
    AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)item.getMenuInfo();
    int menuItemIndex = item.getItemId();   
    showDeleteDialog(getString(R.string.deletemsg));
    return super.onContextItemSelected(item);

}

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

在onCreate中,在构建菜单之前添加一个检查。

假设您的列表项适配器对象名为listItemsAdapter

  AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo;



    if(info != null)
    {
    if (v.getId()==R.id.list) {
            AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)menuInfo;
            menu.add(getString(R.string.Delete));
        }
    }

是否单击空单元格或具有值的单元格。如果它只是一个空单元格,那么我已相应地修改了代码。