上一次,我们通过ActionBar删除整个短信会话,但在实际使用中,我们还需要删除选中的某条记录,而非会话下所有短信,在这一篇文章中,我们就一起来该如何做吧,运行效果如下:
首先,为使用上下文菜单,需要在ShowSessionMessagesActivity中重写上下文菜单的相关方法,包括onCreateContextMenu()和onContextItemSelected(),前者用于创建上下文菜单,加载相应的定义上下文菜单选项的文件,后者定义了上下文菜单选项被选中的处理方法,先来看一下onCreateContextMenu()的实现吧。
<span style="font-size:14px;">//加载上下文菜单文件,创建上下文菜单,当某条短信被点击时弹出选项
public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {
//通过xml文件来配置上下文菜单选项
MenuInflater mInflater = getMenuInflater();
mInflater.inflate(R.menu.show_session_messages_context_menu, menu);
super.onCreateContextMenu(menu, v, menuInfo);
}</span>
在此方法中,加载了上下文菜单的定义文件,即show_session_messages_context_menu.xml,该xml文件中定义了上下文菜单的选项,文件所在目录与OptionMenu一样,都是工程下的res\menu,定义的方式也与OptionMenu一样,下面看一下xml文件的定义。
<span style="font-size:14px;"><menu xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- 上下文菜单的删除选项 -->
<item
android:id="@+id/show_session_messages_context_menu_delete"
android:title="@string/action_delete"/>
<!-- 上下文菜单的转发选项 -->
<item
android:id="@+id/show_session_messages_context_menu_forward"
an