网站开发商城图片上传,wordpress jae,建站品牌大全,手机和电脑同步的进销存软件一、概述 Android中#xff0c;上下文菜单是通过onLongClick(...)事件访问的。在事件触发后显示菜单项。 在使用上下文菜单时#xff0c;通常在onCreate(...)方法中#xff0c;先行注册上下文菜单。在实现onCreateContextMenu(...)方法和onContextItemSelected(...)方法。 注…一、概述 Android中上下文菜单是通过onLongClick(...)事件访问的。在事件触发后显示菜单项。 在使用上下文菜单时通常在onCreate(...)方法中先行注册上下文菜单。在实现onCreateContextMenu(...)方法和onContextItemSelected(...)方法。 注册菜单方法registerForContextMenu(...) 注销注册菜单方法unregisterForContextMenu(...) 二、使用XML文件添加上下文菜单 text_menu.xml上下文菜单选项 1 ?xml version1.0 encodingutf-8?2 menu xmlns:androidhttp://schemas.android.com/apk/res/android3 item android:titleFile4 menu5 group android:checkableBehaviornone6 item android:idid/file_new7 android:titleNew8 android:iconandroid:drawable/ic_input_add9 android:alphabeticShortcutn /
10 item android:idid/file_save
11 android:titleSave
12 android:iconandroid:drawable/ic_menu_save
13 android:alphabeticShortcuts /
14 /group
15 /menu
16 /item
17 item android:titleEdit
18 menu
19 !-- 单选按钮组 --
20 group android:checkableBehaviorsingle
21 item android:idid/cut
22 android:titleCut
23 android:alphabeticShortcutCtrl x /
24 item android:idid/copy
25 android:titleCopy
26 android:alphabeticShortcutCtrl c /
27 item android:idid/paste
28 android:titlePaste
29 android:alphabeticShortcutCtrl v /
30 /group
31 /menu
32 /item
33 /menu 在代码中添加上下文菜单显示及在选择上下文菜单项时触发事件MainActivity.java 1 public class MainActivity extends Activity2 {3 private static final String TAG MainActivity;4 private Context mContext;5 private EditText mEditMenu;6 private MenuInflater mMenuInflater;7 8 Override9 public void onCreate(Bundle savedInstanceState)
10 {
11 super.onCreate(savedInstanceState);
12 setContentView(R.layout.activity_main);
13
14 mContext getApplicationContext();
15
16 // 绑定菜单按钮事件
17 mEditMenu (EditText) findViewById(R.id.input_text3);
18 // 注册上下文菜单
19 registerForContextMenu(mEditMenu);
20 }
21
22 // 上下文菜单与EditView控件绑定长按显示菜单项
23 Override
24 public void onCreateContextMenu(ContextMenu menu, View view, ContextMenu.ContextMenuInfo contextMenuInfo)
25 {
26 super.onCreateContextMenu(menu, view, contextMenuInfo);
27 // 创建新的contextMenu对象
28 mMenuInflater new MenuInflater(this);
29 // 使用XML与原menu对象对新ContextMenu对象初始化
30 mMenuInflater.inflate(R.menu.text_menu, menu);
31 }
32
33 // 上下文菜单触发上下文菜单项点击事件时响应
34 Override
35 public boolean onContextItemSelected(MenuItem item)
36 {
37 switch (item.getItemId())
38 {
39 case R.id.file_new:
40 {
41 Toast.makeText(mContext, File new., Toast.LENGTH_SHORT).show();
42 break;
43 }
44 case R.id.file_save:
45 {
46 Toast.makeText(mContext, File save., Toast.LENGTH_SHORT).show();
47 break;
48 }
49 case R.id.cut:
50 {
51 Toast.makeText(mContext, Edit cut., Toast.LENGTH_SHORT).show();
52 break;
53 }
54 case R.id.copy:
55 {
56 Toast.makeText(mContext, Edit copy., Toast.LENGTH_SHORT).show();
57 break;
58 }
59 case R.id.paste:
60 {
61 Toast.makeText(mContext, Edit paste., Toast.LENGTH_SHORT).show();
62 break;
63 }
64 default:
65 Toast.makeText(mContext, 无响应, Toast.LENGTH_SHORT).show();
66 }
67 return true;
68 }
69
70 // 注销注册过的上下文菜单
71 Override
72 public void onDestroy()
73 {
74 super.onDestroy();
75 unregisterForContextMenu(mEditMenu);
76 }
77 } PSContextMenu的任何项在被选中后整个ContextMenu会自动被系统关闭掉即使多选项也是这样。这样的话多选项的行为就有些怪异。查看Android的源码后发现这是个Android的bug,应该是google没考虑多选项的情况。 尽管上下文菜单的拥有者是View生成上下文菜单却是通过Activity中的onCreateContextMenu ( ContextMenu menu, View v,ContextMenu.ContextMenuInfo menuInfo)方法该方法很像生成Options Menu的onCreateOptionsMenu ( Menu menu)方法。两者的不同在于onCreateOptionsMenu 只在用户 第一次 按“Menu”键时被调用而onCreateContextMenu 会在用户 每一次 长按View时被调用而且View必须已经注册了上下文菜单。转载于:https://www.cnblogs.com/naray/p/5358438.html