0

我有一个 ListActivity,其中的列表已为 contextmenu 注册。但是在长按任何列表项后,上下文菜单没有出现在模拟器上。为了进一步检查问题,我添加了一个 LOg.i() 语句已放置在 onContextItemSelected 方法中。下面提供了代码片段。

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<Item
    android:id="@+id/details_context_button"
    android:title="Details"
    /> 
<Item
    android:id="@+id/edit_context_button"
    android:title="Edit"
    />
 <Item
    android:id="@+id/delete_context_button"
    android:title="Delete"
    />

</menu>`

在 LISTACTIVITY ONCREATE 方法中:

 ListView list=getListView();       
this.setListAdapter(new NamesAdapter   
(this,android.R.layout.simple_list_item_checked, index_ids));
list.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
registerForContextMenu(list);

上下文项选择方法如下:

 public void onCreateContextMenu(ContextMenu menu,View v,ContextMenuInfo info){
        super.onCreateContextMenu(menu,v,info);
        MenuInflater inflater=getMenuInflater();
        inflater.inflate(R.menu.list_items_contextmenu, menu); 
        Log.i("","m here");     
    }

logcat 显示“m here”行。但没有出现上下文菜单。我很困惑。有人可以帮忙吗?

4

2 回答 2

0

我在文档中找不到任何内容,但我只是对其进行了测试。正如我所怀疑的那样,该<item>标签区分大小写。因此,更改菜单 xml 中的所有标签

  <?xml version="1.0" encoding="utf-8"?>
  <menu xmlns:android="http://schemas.android.com/apk/res/android" >
      <item
          android:id="@+id/details_context_button"
          android:title="Details"/> 
      <item
          android:id="@+id/edit_context_button"
          android:title="Edit"/>
      <item
          android:id="@+id/delete_context_button"
          android:title="Delete"/>
   </menu>

<item>如果是大写,您的菜单将不会显示

根据W3schools

XML 标签区分大小写 XML 标签区分大小写...

开始和结束标签必须使用相同的大小写:

于 2013-06-27T18:04:27.480 回答
0

我认为 listview 在这里拦截事件,因此您的活动没有收到它。我不确定,但它看起来像这样。

于 2013-06-27T18:07:29.643 回答