创建以及响应菜单、上下文菜单

本文详细介绍了如何在Android应用中创建并响应不同类型的菜单,包括工具栏菜单和上下文菜单。通过具体的代码示例,展示了如何使用MenuInflater加载菜单资源,并处理菜单项的选择事件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

创建菜单:

@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的数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值