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

来源:互联网 发布:淘宝查假货 编辑:程序博客网 时间:2024/06/05 16:09

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获取相关联的 Itemswitch(item.getItemId()){<span style="white-space:pre"></span>//确认点击的ContextMenu的Item的Idcase 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;">@Overridepublic 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 GingerbreadregisterForContextMenu(listView);//注册ListView以后,就可以长按视图调用 //onCreateContextMenu()函数了,//然后点击菜单项调用onContextItemSelected()函数return v;}</span>



0 0