2013-06-27 32 views
0

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

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” 无文本菜单:

<?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>` 

IN THE 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); 

THE ONCONTEXT ITEM选择的方法如下。我非常困惑,有人请帮忙吗?

+0

你可能Item'改变''要在item'你的菜单XML – codeMagic

回答

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标签区分大小写...

打开和关闭标签必须写入相同的大小写:

+0

yup.You是100%correct.I纳闷为什么编码蚀力抛出任何warning.Anyway,非常感谢中。 –

+0

因为它不是非法的,而且据我所知,有一些解决方法可以使其不区分大小写,但可能不是一个好主意。因此,虽然xml区分大小写,但如果标签错误,标签并不是非法的,但它们不会提供所需的结果 – codeMagic

0

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