一般说到上下文菜单基本上都是长按事件,在一个控件上长按,就会弹出一个菜单。
1.创建上下文菜单:
//覆盖方法,创建上下文菜单 @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); //创建菜单项
menu.add(0, 0, 0, "查看"); menu.add(0, 1, 0, "跳转至网页查看"); menu.add(0, 2, 0, "查看博主其他博文");
menu.add(0, 0, 0, "删除此项"); menu.add(0, 1, 0, "全部删除"); menu.add(0, 2, 0, "返回");
}
2.覆盖方法onContextItemSelected。对每一个菜单项进行相应的处理
// 覆盖方法,对每一个菜单项进行事件监听 @Override public boolean onContextItemSelected(MenuItem item) { switch (item.getItemId()) { case 0: Toast.makeText(context, "查看", Toast.LENGTH_SHORT).show(); break; case 1: Toast.makeText(context, "跳转至网页查看", Toast.LENGTH_SHORT).show(); break; case 2: // 。。。。。。。。 break; default: break; } return super.onContextItemSelected(item); }
3.注册上下文菜单。如果没有注册,单击界面的某一个视图是没有反应的,所以上下文菜单与前面的选项菜单不一样
registerForContextMenu(linearLayout); //注册上下文菜单
-----------------------------------------------------------
在此,我想说的是另一种方法:通过对话框设置短按的上下文菜单
----------------------------------------------------------
AlertDialog.Builder dalog = new AlertDialog.Builder(OfflineBlogsContentActivity.this); dalog.setTitle("请选择您要的操作:"); dalog.setView(null); dalog.setItems(new String[] { "跳转至网页查看", "查看博主其他博文", "删除此记录", "取消" }, new OnClickListener() { @Override public void onClick(DialogInterface dialog1, int which) { switch (which) { case 0://跳转至网页查看 Intent intent = new Intent(OfflineBlogsContentActivity.this, BlogsContentActivity.class); intent.setAction("showbloger"); intent.putExtra("id", blog_offine.getBlogId()); intent.putExtra("newstitle", blog_offine.getBlogTitle()); intent.putExtra("link", blog_offine.getBlogUrl()); intent.putExtra("summary", blog_offine.getBlogSummary()); intent.putExtra("updated", blog_offine.getUpdateTime()); intent.putExtra("comments", blog_offine.getBlogSummary()); intent.putExtra("name", blog_offine.getBloger()); if (CheckNetWork.checkNetworkInfo(OfflineBlogsContentActivity.this)) { startActivity(intent); } break; case 1://查看博主其他博文 if (CheckNetWork.checkNetworkInfo(OfflineBlogsContentActivity.this)) { System.out.println(blogapp); Intent intent1 = new Intent(OfflineBlogsContentActivity.this,BlogerAllBlogsActivity.class); intent1.putExtra("blogapp", blogapp); intent1.putExtra("avatar", blogerimgUrl); intent1.putExtra("name", blogername); intent1.putExtra("postcount", blogernum); startActivity(intent1); }else{ Toast.makeText(OfflineBlogsContentActivity.this, "当前无网络!", Toast.LENGTH_SHORT).show(); } break; case 2://删除此记录 AlertDialog.Builder alert = new AlertDialog.Builder( OfflineBlogsContentActivity.this); alert.setView(null); alert.setTitle("删除此项"); alert.setMessage("警告:将删除" + itemName); alert.setPositiveButton("确定", new OnClickListener() { @Override public void onClick( DialogInterface dialog, int which) { BlogsSQLHelper .getDBInstance( OfflineBlogsContentActivity.this) .deleteItem( blog_offine .getBlogId()); } }); alert.setNegativeButton("取消", null); alert.create().show(); break; case 3://取消 dialog1.dismiss(); break; } } }); dalog.create().show();