Android 上下文菜单与上下文操作模式

1.要实例化一个上下文菜单,应调用以下函数

<span style="font-family: Arial, Helvetica, sans-serif;"><span style="font-size:18px;">@Override</span></span>
<span style="font-size:18px;">public void onCreateContextMenu(ContextMenu menu,View v,ContextMenuInfo menuInfo){
     getActivity().getMenuInflater().inflate(R.menu.list_item_context, menu);<span style="white-space:pre">	</span>//长按视图,就会调用这句代码,其中,R.menu.list_item_context是自定义的xml资源
}</span>

2.要响应用户的上下文菜单选择,可以实现一下Fragment的方法

<span style="font-family: Arial, Helvetica, sans-serif;"><span style="font-size:18px;">@Override</span></span>
<span style="font-size:18px;">	public boolean onContextItemSelected(MenuItem item){
		AdapterContextMenuInfo info=(AdapterContextMenuInfo)item.getMenuInfo();
		int position=info.position;<span style="white-space:pre">	</span>//因为是列表视图,所以要确定选择的视图位置
		CrimeAdapter adapter=(CrimeAdapter)getListAdapter();<span style="white-space:pre">	</span>//获取列表视图的 ListAdapter;
		Crime crime=adapter.getItem(position);<span style="white-space:pre">			</span>//通过列表视图的ListAdapter获取相关联的 Item
		switch(item.getItemId()){<span style="white-space:pre">				</span>//确认点击的ContextMenu的Item的Id
		case R.id.menu_item_delete_crime:
			CrimeLab.get(getActivity()).deleteCrime(crime);<span style="white-space:pre">	</span>//本菜单Item的作用是删除选中项
			adapter.notifyDataSetChanged();
			return true;
		}
		return super.onContextItemSelected(item);
	}</span>


 
3.最后,要实现长按列表项能弹出上下文菜单,需要在LIstFragment中的onCreateView()函数中注册视图,ListView中会有很多视图,但只需注册ListView就可以了: 
<span style="font-size:18px;">@Override
	public View onCreateView(LayoutInflater inflater,ViewGroup parent,Bundle savedInstanceState){
		View v=super.onCreateView(inflater, parent, savedInstanceState);
		ListView listView=(ListView)v.findViewById(android.R.id.list);
		//Use floating context menus on Froyo and Gingerbread
		registerForContextMenu(listView);	//注册ListView以后,就可以长按视图调用 
							//onCreateContextMenu()函数了,
							//然后点击菜单项调用onContextItemSelected()函数
		return v;
}</span>
 



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值