创建菜单:
@Override
onCreateOptionMenu(Menu menu, MenuInflater inflater){inflater.inflate(R.menu.xxx,menu);
}
用参数inflater的inflate方法,把menu文件的资源传入menu中,该菜单指的是位于工具栏的菜单。
响应菜单:
@Override
onOprionsItemSelected(MenuItem item){
switch(item.getid()){
case R.id.xxx: break;
case R.id.yyy: break;
}
}
注意,在Fragment中,由于Fragment属于FragmentManager管理,当其所挂载的Activity接收来自onCreateOptionMenu()方法时,应该在Fragment中的onCreate()方法声明调用了onCreateOptionMenu()方法,所以当Fragment创建工具栏菜单是,应该在onCreate()中调用:
setHasOptionMenu(true);
这样Fragment才能显示菜单。
创建上下文菜单:(长按屏幕出现)
@Override
onCreateContextMenu(ContextMenu menu,View v,ContextMenu.ContextMenuInfo MenuInfo){
getActivity().getMenuInflater().inflater(R.menu.xxx,menu);
//由于参数中没有inflater,所以需要调用Activity的Inflater来实现挂载菜单
}
响应上下文菜单:
onContextItemSelected(MenuItem item){
switch(item.getId()){
case R.id.xxx: break;
}
}
如果要使长按菜单与ListView结合,可以调用:
registerForContextMenu(listview);
这样以后要接可以在onContextItemSelected()方法中调用一下代码:
AdapterContextMenuIInfo info =(AdapterContextMenuIInfo)item.getMenuInfo();
int position =info.position;
ListviewAdapter adapter=(ListViewAdapter)getListView Adapter();//这里的ListviewAdapter 是你创建listView时自己创建的Adapter类
XX xx=adapter.getItem(positon);//调用你的Adapoter类中的getItem(position)方法,获取Listview中的对list象,XX表示你的list中的一个对象。
记住,在改变ListView中你所传入的List对象的数据后,必须调用一下
adapter.notifyDataSetChanged();
方法来更新ListView的数据。